批处理 goto会跳出所有循环吗

代码如下:......chdir%aa%for/d%%iin(*)do(......chdir%bb%for/d%%min(*)do(move/y%%m\*%aa%rd%... 代码如下:
......
chdir %aa%
for /d %%i in (*) do (
......
chdir %bb%
for /d %%m in (*) do (
move /y %%m\* %aa%
rd %%m /q /s
goto next
)

:next
......
chdir %aa%
)
echo OK
......

子循环我每次只想执行一次,然后跳出,接着外面的循环,但是加上goto后外面的循环不循环了,直接到了末尾了,为是么?怎么实现?
展开
 我来答
yyykkkyyyy
2011-12-16 · TA获得超过3136个赞
知道大有可为答主
回答量:2691
采纳率:40%
帮助的人:3305万
展开全部
for 内如有goto 只能跳出整体for 且不返回,要返回可用call 代goto 但它返回后会接着循环,而不会中止当层循环去继续外层循环
想达到你说的目的,只能另想办法,最笨的一种:改goto 为call 并在执行后设置一“标志性”变量,比如 set f=yes 而当层循环改成条件执行 if not defined f .... 这样就起到了只执行一次的目的,当然还有“配套”工作,本层循环前要清除标志变量 set "f=" 。如你所列的情况就没必要goto 或call 出for循环,直接在for 内用括号括住所有需要执行的代码就行了,而一定要转到for外,还要注意批处理是顺序执行的,一要注意子过程要到结尾才会返回, 二是for 循环完后可能不应该再执行“子过程” 需要用命令跳开或退出。
结合具体情况,改变思路是可能有更优方案的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式