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

发布于 2024-09-13 22:03:58 字数 68 浏览 5 评论 0原文

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

I have a batch file that runs a couple executables, and I want it to exit on success, but stop if the exit code <> 0. How do I do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

仅此而已 2024-09-20 22:03:58

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

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

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

Sounds like you'll want the "If Errorlevel" command. Assuming your executable returns a non-0 exit code on failure, you do something like:

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

Errorlevel checking is done as a greater-or-equal check, so any non-0 exit value will trigger the jump. Therefore, if you need to check for more than one specific exit value, you should check for the highest one first.

彩虹直至黑白 2024-09-20 22:03:58

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

myProgram.exe && echo Done!

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

myProgram.exe || PAUSE

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

You can also use conditional processing symbols to do a simple success/failure check. For example:

myProgram.exe && echo Done!

would print Done! only if myProgram.exe returned with error level 0.

myProgram.exe || PAUSE

would cause the batch file to pause if myProgram.exe returns a non-zero error level.

裸钻 2024-09-20 22:03:58

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

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

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

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

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

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

A solution better than Hellion's answer is checking the %ERRORLEVEL% environment variable:

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

It executes the IF body, if the return code is anything other than zero, not just values greater than zero.

The command IF ERRORLEVEL 1 ... misses the negative return values. Some progrmas may also use negative values to indicate error.

BTW, I love Cheran's answer (using && and || operators), and recommend that to all.

For more information about the topic, read this article

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文