DOS批处理脚本是否有“set -e”?

时间:2012-12-13 11:55:00

标签: windows batch-file

在bash中,脚本开头的“set -e”指示bash在内部任何命令第一次失败时使整个脚本失败。

如何为Windows批处理脚本执行相同的操作?

2 个答案:

答案 0 :(得分:15)

Tuim的解决方案有效,但它可以更简单。

ERRORLEVEL已设置,因此无需GOTO设置ERRORLEVEL的标签。

您只需使用

即可
yourCommand || exit /b

请注意,如果您处于CALL中间,则exit / b将仅退出当前子例程。您的脚本必须逐层退出每个CALL,直到它到达脚本的根目录。只要您还在每个CALL语句之后放置测试

,这将自动发生
call :label || exit /b

可以强制批处理脚本立即从任何CALL深度退出。有关详细信息,请参阅How can I exit a batch file from within a function?。一定要阅读这两个答案。接受的答案有几个潜在的严重缺点。

答案 1 :(得分:5)

不是直接但您可以将以下内容添加到每个要执行某些内容的行中。

|| goto :error

然后定义错误,停止脚本。

:error
exit /b %errorlevel%