2

我已经编写了一个.bat文件来首先运行一个程序,如果它正确完成,我运行另一个程序并检查它的返回值。

first-program.exe
IF "%ERRORLEVEL%"=="0" (
    second-program.exe
    IF "%ERRORLEVEL%"=="0" (
        ECHO OK
    ) ELSE (
        ECHO NOK
    )
)

但是第二个%ERRORLEVEL%总是等于第一个,它没有设置为的返回值second-program.exe

4

1 回答 1

3

的两个实例%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
于 2018-05-15T12:05:29.340 回答