Jul*_*eno 5 if-statement batch-file windows-7
我正在尝试执行以下操作:
IF EXISTS ("C:\Users\user\Desktop\folder1\") {
MOVE "C:\Users\user\Desktop\folder2\" "C:\Users\user\Desktop\folder1\"
RENAME "C:\Users\user\Desktop\folder1\folder2\" "folder3"
} else {
MKDIR "C:\Users\user\Desktop\folder1\"
MOVE "C:\Users\user\Desktop\folder2\" "C:\Users\user\Desktop\folder1\"
RENAME "C:\Users\user\Desktop\folder1\folder2\" "folder3"
}
Run Code Online (Sandbox Code Playgroud)
使用以下代码:
@ECHO ON
IF EXIST "C:\Users\user\Desktop\folder1\" (GOTO MOVER)
PRINT "It doesn't exists - This is just for debugging"
PAUSE
:MOVER
ECHO "MOVER"
PAUSE
EXIT
:END
Run Code Online (Sandbox Code Playgroud)
但系统不打印测试单词.
IF EXIST仅检查文件是否存在,不能检查文件夹。通常,你这样测试
IF NOT EXIST "myfolder\NUL" mkdir "myfolder"
Run Code Online (Sandbox Code Playgroud)
伪设备NUL就像一个文件,实际上存在于每个文件夹中。注意拼写。
但我看到该测试在批处理文件中失败,原因不明。所以我建议这样做:
CD myfolder 2>NUL && CD .. || MD myfolder
Run Code Online (Sandbox Code Playgroud)
CD myfolder尝试对该文件夹进行合法操作,并且仅当该操作失败时,MD/的有条件执行MKDIR才会创建该文件夹。CD ..如果文件夹应该存在,则恢复操作。2>NUL如果文件夹不存在,则禁止显示错误消息。
编辑: 显然有一种更简单的测试方法:在文件夹名称后附加一个反斜杠 (\),使其在语法上成为一个文件夹,如下所示:
if not exist myfolder\ md myfolder || goto :EOF
Run Code Online (Sandbox Code Playgroud)
如果文件夹“myfolder”尚不存在,这将创建该文件夹。此外,如果有一个文件名为“MyFolder中的”MD将失败,并显示错误消息后,该批处理文件将被终止。此外,将设置 ERRORLEVEL。我更喜欢这个,因为不必重定向错误输出。
编辑: 如果要执行多个命令,请在子shell中运行它们,即,将它们括在括号中,如下所示:
if not exist myfolder\ (
md myfolder
dir myfolder
REM ...or run any other commands
) || goto :EOF
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14484 次 |
| 最近记录: |