40

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

4

3 回答 3

46

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

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

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

于 2010-08-10T18:20:05.580 回答
31

您还可以使用条件处理符号进行简单的成功/失败检查。例如:

myProgram.exe && echo Done!

Done!仅当myProgram.exe返回错误级别 0 时才会打印。

myProgram.exe || PAUSE

如果 myProgram.exe 返回非零错误级别,将导致批处理文件暂停。

于 2010-08-11T05:55:31.687 回答
7

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

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

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

该命令IF ERRORLEVEL 1 ...错过了负返回值。一些程序也可能使用负值来指示错误。

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

有关该主题的更多信息,请阅读这篇文章

于 2019-09-24T11:47:42.750 回答