您已经设置了退出代码(ErrRealLead)。就这么做吧:
setlocal enabledelayedexpansion
For %%A in (alpha beta gamma) DO (
Echo Outer loop %%A
Call :inner
if !errorlevel! equ 2 (echo inner loop failed & exit /b 2)
)
Goto :eof
:inner
For %%B in (U V W X Y Z) DO (
if %%B==X ( exit /b 2 )
Echo Inner loop Outer=%%A Inner=%%B
)
exit /b 1
Aschipfl建议“
只需插入
if ErrorLevel 2 goto :EOF
之后
call
命令行
"
这可能是一个好主意(并避免延迟扩展),但要注意
if errorlevel 2
实际上是指“如果错误级别是2或更高”。如果你的内环只会回来
0
或
2
,这绝对是更好的解决方案。当它可能返回更多可能的错误级别时,您必须非常小心地处理它们
if errorlevel
. (这就是原因,我选择了
if !errorlevel!
相反)