如果内循环使用批处理命令有任何问题,谁能帮助我终止整个主程序。
下面是我的代码。
如果在内部循环中找到的值是X,在这里我需要从主外部循环中退出。
但目前我的代码仅从内部循环退出。
For %%A in (alpha beta gamma) DO (
Echo Outer loop %%A
Call :inner
)
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
输出:仅应如下所示。
Outer loop alpha
Inner loop Outer=alpha Inner=U
Inner loop Outer=alpha Inner=V
Inner loop Outer=alpha Inner=W
您已经设置了退出代码(错误级别)。对此做出反应:
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!
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句