我已经写了一个.bat
文件来首先运行一个程序,如果它正确完成我运行另一个程序并检查它的返回值。
first-program.exe
IF "%ERRORLEVEL%"=="0" (
second-program.exe
IF "%ERRORLEVEL%"=="0" (
ECHO OK
) ELSE (
ECHO NOK
)
)
但是,第二个%ERRORLEVEL%
始终等于第一个,它不会设置为second-program.exe
的返回值。
答案 0 :(得分:1)
%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