批处理文件 - 即使发生故障,REN命令的ErrorLevel也会返回0

FMF*_*MFF 0 command-line rename batch-file

这与我之前的问题有关.

ren "C:\Temp\%%A" "%%A"
if errorlevel 0 (
          "C:\Program Files\7-Zip\cmdline\7za.exe" a -tzip -mx9 "C:\temp\Zip\%%A.zip" "C:\temp\%%A"
           Move "C:\temp\%%A" "C:\Temp\Archive"
                )
Run Code Online (Sandbox Code Playgroud)

在上面,即使REN命令失败,IF总是评估为true.

我们的想法是检查文件是否未被任何其他应用程序锁定,如果没有,则将其归档并将其移动到其他位置.

怎么做到最好?

谢谢.

Fra*_*ack 5

help if在命令行上键入以获取有关错误级别处理的一些信息.

您的代码的问题是,IF ERRORLEVEL N对于任何等于或大于的数字,表达式的计算结果为trueN

通常只有ERRORLEVEL 0表示成功,任何其他(更大)值表示某些错误.要简单地检查,如果还没有发生错误,请将检查反转为:

IF NOT ERRORLEVEL 1 (
   REM your code here
)
Run Code Online (Sandbox Code Playgroud)

或者作为替代方案,退出脚本:

IF ERRORLEVEL 1 EXIT /B
Run Code Online (Sandbox Code Playgroud)