在遇到这个问题两次后,我想我会在这里发布,看看是否有人知道如何绕过它.
我似乎无法突破嵌套循环使用goto,因为它看起来就像它突破内循环,然后括号不匹配,因为它从未到达内部关闭循环.
我把它缩小到一个非常简单的例子
for %%a in (1,2,3) do (
for %%b in (4,5,6) do (
echo Breaking
goto :BREAK
)
:BREAK
)
Run Code Online (Sandbox Code Playgroud)
这导致错误
) was unexpected at this time.
Run Code Online (Sandbox Code Playgroud)
我想可能添加额外的括号可能会解决问题,但除非我知道我要打破,否则它将无法解决,如果这是一个有条件的突破,那就是同样的问题.
是否有任何简单的替代方法可以将内循环分解回外部,即使是使用if's和else's 的条件中断?
小智 10
通过在标签中放置内循环来打破.
for %%a in (1, 2, 3) DO (
call :innerloop
)
:innerloop
for %%b in (4, 5, 6) DO (
if %%b==<something> (
echo break
goto :break
)
)
:break
Run Code Online (Sandbox Code Playgroud)
在中断后,您还可以省略与FOR绑定的控制变量的其余迭代:
@echo off
for %%a in (1,2,3) do (
echo Top-level loop: %%a
set break=
for %%b in (4,5,6) do if not defined break (
echo Nested loop: %%a-%%b
if %%b == 4 (
echo Breaking
set break=yes
)
)
)
Run Code Online (Sandbox Code Playgroud)
此方法将嵌套for-body的代码保留在其原始位置,并允许在for-body内的多个点处轻松设置中断.
安东尼奥
| 归档时间: |
|
| 查看次数: |
22454 次 |
| 最近记录: |