12

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

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

4

2 回答 2

15

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

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

你可以简单地使用

yourCommand || exit /b

请注意,如果您处于 CALL 中间,exit /b 只会退出当前子例程。您的脚本必须逐层退出每个 CALL,直到到达脚本的根目录。只要您还在每个 CALL 语句之后进行测试,这就会自动发生

call :label || exit /b

可以强制批处理脚本立即从任何 CALL 深度退出。请参阅如何从函数中退出批处理文件?了解更多信息。请务必阅读两个答案。公认的答案有几个潜在的严重缺陷。

于 2012-12-13T15:44:37.950 回答
7

不是直接的,但您可以将以下内容添加到要执行的每一行。

|| goto :error

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

:error
exit /b %errorlevel%
于 2012-12-13T11:58:37.277 回答