永发信息网

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

答案:2  悬赏:60  手机版
解决时间 2021-03-03 01:08
代码如下:
......
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后外面的循环不循环了,直接到了末尾了,为是么?怎么实现?
最佳答案
for 内如有goto 只能跳出整体for 且不返回,要返回可用call 代goto 但它返回后会接着循环,而不会中止当层循环去继续外层循环
想达到你说的目的,只能另想办法,最笨的一种:改goto 为call 并在执行后设置一“标志性”变量,比如 set f=yes 而当层循环改成条件执行 if not defined f .... 这样就起到了只执行一次的目的,当然还有“配套”工作,本层循环前要清除标志变量 set "f=" 。如你所列的情况就没必要goto 或call 出for循环,直接在for 内用括号括住所有需要执行的代码就行了,而一定要转到for外,还要注意批处理是顺序执行的,一要注意子过程要到结尾才会返回, 二是for 循环完后可能不应该再执行“子过程” 需要用命令跳开或退出。
结合具体情况,改变思路是可能有更优方案的。
全部回答
goto 指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。 语法:goto label (label是参数,指定所要转向的批处理程序中的行) 行用 :label 表示 举例 ********************************************************** @echo off :start cls set /p numis=请输入数字1或2: if /i "%numis%"=="1" goto 1 if /i "%numis%"=="2" (goto 2) else (echo 输入有误!&&pause>nul&&goto start) :1 echo 你输入的是1 pause>nul&&goto start :2 echo 你输入的是2 pause>nul&&goto start
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
优储理财第三方资金托管有吗
忠杰服饰厂我想知道这个在什么地方
广东省河南商会地址在什么地方,想过去办事
1:神采( ) 2:忠心( ) 3:千里( ) 4:
一个人长时间间哭泣会有什么症状
百世快运西湖一部我想知道这个在什么地方
跳水运动员为什么跳完后要到一个小池子洗一下
传祺gs4和新逍客哪个好,纠结
丰田在霸道之后的成功案例,或失败案例?
为什么孙悟空被压在五指山下 500 年都没有朋
怎样写小区内禁止种菜的通告
歌词是我们之间怎么办,没完没了像梦一样是什
什么英雄好打不知火舞
孔桩打好了,混凝土已浇筑完毕,里面有沉渣,怎
徐记麻辣烫这个地址在什么地方,我要处理点事
推荐资讯
菏泽市黄河路汽配城到西客站坐几路公交车
淘宝子账号怎么给权限
喷射除锈标准有哪几级?
小胸女别急 看薛凯琪如何A罩晋C罩
左边有条鱼右边有把梳子,打一成语。谢谢!
小水电接入对电网的影响
忧心忡忡用英语怎么说
路邦汽车升级养护(赵陵北路)地址在哪,我要去
描写青色的有哪些词???
市花 每座城市都有代表这座城市的市花,请你
济宁技师学院和济宁理工职业学院哪个好
我爱刘璐,求写一首藏头诗,各位大神帮帮忙,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?