我想获得 bash 提供的相同功能,set -e
但在 Windows 批处理文件中。这怎么可能?
目前这允许我退出,但我不想在批处理文件的每一行之后添加这一行。
IF %ERRORLEVEL% NEQ 0 exit /B %ERRORLEVEL%
我想获得 bash 提供的相同功能,set -e
但在 Windows 批处理文件中。这怎么可能?
目前这允许我退出,但我不想在批处理文件的每一行之后添加这一行。
IF %ERRORLEVEL% NEQ 0 exit /B %ERRORLEVEL%
-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 !.
您必须在每个要在出错时退出的命令之后添加一个检查。您可以只使用或检查||
命令结果,而不是一整行。
command || exit /b
这也可以通过将其放在开头的变量中来简化。
set "e=|| exit /b"
command1 %e%
command2 %e%
批处理文件的上下文很重要。这应该允许您启动多个文件并以真正的错误级别退出。
@echo off
for %%a in (
"exeone"
"exetwo"
"exethree"
"exefour"
) do "%%~a" || exit /B %ERRORLEVEL%