在批处理文件中测试ERRORLEVEL不会返回预期的结果

时间:2012-09-13 17:26:04

标签: batch-file

我有一个Windows 7 x64系统,我希望有一个批处理文件执行程序,然后测试进程的退出代码并根据退出代码执行一些操作。例如:

@rem sets the process exit code to 1. should print "success!" actually prints nothing
cmd /c exit 1
if NOT ERRORLEVEL 0 echo success!

@rem prints "success!" as expected
cmd /c exit 1
if errorlevel 1 echo success!

@rem prints "failure!" even though the exit code is 0
cmd /c exit 0
if errorlevel 1 echo failure!    

@rem prints "ERRORLEVEL=1" as expected
cmd /c exit 1
echo ERRORLEVEL=%ERRORLEVEL%

我需要做些什么才能从批处理文件中获得预期的行为?

1 个答案:

答案 0 :(得分:3)

NOT ERRORLEVEL 0无法正常工作

首先,它评估ERRORLEVEL 0
由于错误级别为 0或更高,因此评估为TRUE

然后评估NOT
NOT TRUEFALSE,表示您的第一封邮件无法打印。

第3个结果没有回应失败,所以我不知道你的系统出了什么问题。要检查错误级别,我在每个退出语句

之后放置echo ERRORLEVEL=%ERRORLEVEL%