Bil*_*ill 410 windows cmd batch-file
任何人都可以告诉我如何在Windows批处理脚本中执行以下操作?(*.bat
):
更详细地说,我想创建一个VTS
在C:\
驱动器上命名的文件夹,但前提是该文件夹尚不存在.我不想覆盖文件夹的内容(如果它已经存在并且执行批处理).
小智 581
你只需使用它:if not exist "C:\VTS\" mkdir C:\VTS
只有当文件夹不存在时才会创建一个目录.
请注意,只有VTS存在并且是目录时,此存在测试才会返回true.如果它不存在,或者作为文件存在,则mkdir命令将运行,并且应该导致错误.您可能想要检查VTS是否也作为文件存在.
Mar*_*onk 206
if exist C:\VTS\NUL echo "Folder already exists"
if not exist C:\VTS\NUL echo "Folder does not exist"
Run Code Online (Sandbox Code Playgroud)
另请参见https://support.microsoft.com/en-us/kb/65994
(更新于2018年3月7日; Microsoft文章已关闭,存档于https://web.archive.org/web/20150609092521/https://support.microsoft.com/en-us/kb/65994)
Age*_*191 52
mkdir C:\VTS
无论如何都要打电话.它只会报告该子目录已存在.
编辑:正如其他人所说,如果文件夹已存在,则会设置%ERRORLEVEL%.如果您的批处理(或任何调用它的进程)不关心错误级别,则此方法可以很好地工作.由于问题没有提到避免错误级别,这个答案是完全有效的.它满足创建文件夹(如果它不存在)的需要,并且它不会覆盖现有文件夹的内容.否则请按照Martin Schapendonk的回答.
小智 36
mkdir C:\VTS 2> NUL
Run Code Online (Sandbox Code Playgroud)
创建一个名为VTS
和输出A subdirectory or file TEST already exists
到的文件夹NUL
.
要么
(C:&(mkdir "C:\VTS" 2> NUL))&
Run Code Online (Sandbox Code Playgroud)
更改驱动器号C:
,mkdir
输出错误NUL
并运行下一个命令.
小智 29
set myDIR=LOG
IF not exist %myDIR% (mkdir %myDIR%)
Run Code Online (Sandbox Code Playgroud)
D3F*_*ULT 17
我使用这种方式,你应该在目录名的末尾添加一个反斜杠,以避免该文件存在于没有与你指定的目录同名的扩展名的文件中,从不使用"C:\ VTS",因为它可以是一个文件存在名称"VTS"保存在"C:"分区中,正确的方法是使用"C:\ VTS \",检查VTS后面的反斜杠,所以是正确的方法.
@echo off
@break off
@title Create folder with batch but only if it doesn't already exist - D3F4ULT
@color 0a
@cls
setlocal EnableDelayedExpansion
if not exist "C:\VTS\" (
mkdir "C:\VTS\"
if "!errorlevel!" EQU "0" (
echo Folder created successfully
) else (
echo Error while creating folder
)
) else (
echo Folder already exists
)
pause
exit
Run Code Online (Sandbox Code Playgroud)
小智 16
您可以使用:
if not exist "C:\VTS\" mkdir "C:\VTS"
Run Code Online (Sandbox Code Playgroud)
您还可以展开代码以替换任何缺少的预期文件.
if not exist "C:\VTS\important.file" echo. > "C:\VTS\important.file"
Run Code Online (Sandbox Code Playgroud)
小智 12
如果文件夹不存在,您需要创建一个文件夹吗?好吧,这里有一个如何操作的示例。
首先,我通过输入以下代码来检查该文件夹是否尚不存在:
if not exist "FOLDERPATH" (
mkdir "FOLDERPATH"
)
Run Code Online (Sandbox Code Playgroud)
所以如果我运行代码。如果该文件夹已经存在,它将什么也不做。如果该文件夹已经存在,我们将执行以下操作:
if exist "FOLDERPATH" (
rmdir /s /q "FOLDERPATH"
mkdir "FOLDERPATH"
)
Run Code Online (Sandbox Code Playgroud)
现在,如果我运行代码,它将重新创建该文件夹(如果它已经存在)。这是示例代码:
@echo off
cls
if not exist "C:\ExamplePath\" (
echo Creating Folder...
mkdir "C:\ExamplePath\"
pause
)
if exist "C:\ExamplePath\" (
echo Re-Creating Folder...
rmdir /s /q "C:\ExamplePath"
pause
)
Run Code Online (Sandbox Code Playgroud)
现在该if exist
部分是可选的。如果该文件夹已经存在,您可以跳转到标签,如下所示:
if exist "FOLDERPATH" (
goto :ExampleLabel
:ExampleLabel
echo Hi.
pause
)
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助解决您的问题。
这应该适合你:
IF NOT EXIST "\path\to\your\folder" md \path\to\your\folder
Run Code Online (Sandbox Code Playgroud)
但是,还有另一种方法,但它可能不是 100% 有用:
md \path\to\your\folder >NUL 2>NUL
Run Code Online (Sandbox Code Playgroud)
这将创建文件夹,但如果文件夹存在,则不会显示错误输出。我强烈建议您使用第一个。第二个是如果你和另一个有问题。
归档时间: |
|
查看次数: |
590179 次 |
最近记录: |