什么是bash的set -e的cmd.exe替代品?

时间:2013-07-27 14:08:09

标签: batch-file cmd exit-code

我希望获得bash set -e提供的相同功能,但在Windows批处理文件中。这可能是怎么回事?

目前这允许我退出,但我不想在批处理文件的每一行之后添加此行。

IF %ERRORLEVEL% NEQ 0 exit /B  %ERRORLEVEL%

2 个答案:

答案 0 :(得分:4)

供参考

-e   errexit
      Exit immediately if a simple command exits with a non-zero
      status, unless the command that fails is part of an until or
      while loop, part of an if statement, part of a && or || list,
      or if the command's return status is being inverted using !.

http://ss64.com/bash/set.html

遗憾的是,只用一个命令就不可能。

您必须在错误后退出每个命令后添加一个检查。您可以在命令结果中使用或检查||,而不是整个单独的行。

command || exit /b

这也可以通过将其放在开头的变量中来简化。

set "e=|| exit /b"
command1 %e%
command2 %e%

答案 1 :(得分:2)

批处理文件的上下文非常重要。这应该允许您启动多个文件并退出真正的错误级别。

@echo off
for %%a in (
"exeone"
"exetwo"
"exethree"
"exefour"
) do "%%~a" || exit /B  %ERRORLEVEL%