Ebr*_*imi 4 cmd batch-file errorlevel delayedvariableexpansion
我已经编写了一个.bat文件来首先运行一个程序,如果它正确完成,我运行另一个程序并检查它的返回值。
first-program.exe
IF "%ERRORLEVEL%"=="0" (
second-program.exe
IF "%ERRORLEVEL%"=="0" (
ECHO OK
) ELSE (
ECHO NOK
)
)
Run Code Online (Sandbox Code Playgroud)
但是,第二个%ERRORLEVEL%始终等于第一个,它不会设置为 的返回值second-program.exe。
小智 5
的两个实例都%ERRORLEVEL%位于同一代码块中,因此在更新第一个实例时都会获得它们的值。考虑启用变量的延迟扩展enabledelayedexpansion和 替换%ERRORLEVEL%来!ERRORLEVEL!单独更新每个实例。例如:
@echo off
setlocal enabledelayedexpansion
first-program.exe
IF "!ERRORLEVEL!"=="0" (
second-program.exe
IF "!ERRORLEVEL!"=="0" (
ECHO OK
) ELSE (
ECHO NOK
)
)
endlocal
Run Code Online (Sandbox Code Playgroud)