从批处理文件中获取错误代码

时间:2010-08-10 18:12:05

标签: windows batch-file exit-code

我有一个运行几个可执行文件的批处理文件,我希望它在成功时退出,但如果退出代码<>则停止0.我该怎么做?

3 个答案:

答案 0 :(得分:41)

听起来你会想要“If Errorlevel”命令。假设您的可执行文件在失败时返回非0退出代码,您可以执行以下操作:

myProgram.exe
if errorlevel 1 goto somethingbad
echo Success!
exit
:somethingbad
echo Something Bad Happened.

错误级别检查是作为更大或相等的检查完成的,因此任何非0退出值都将触发跳转。因此,如果您需要检查多个特定退出值,则应首先检查最高值。

答案 1 :(得分:25)

您还可以使用conditional processing symbols进行简单的成功/失败检查。例如:

myProgram.exe && echo Done!
仅当Done!返回错误级别为0时,

才会打印myProgram.exe

myProgram.exe || PAUSE
如果myProgram.exe返回非零错误级别,

将导致批处理文件暂停。

答案 2 :(得分:1)

Hellion's answer更好的解决方案是检查%ERRORLEVEL%环境变量:

IF %ERRORLEVEL% NEQ 0 (
  REM do something here to address the error
)

如果返回码不是零,而不仅仅是大于零的值,它将执行IF正文。

命令IF ERRORLEVEL 1 ...缺少负返回值。一些程序可能还会使用负值表示错误。

顺便说一句,我喜欢Cheran's answer(使用&&||运算符),并向所有人推荐。

有关该主题的更多信息,请阅读this article