标题: [其他] 批处理For语句里面嵌套goto,只执行一次就退出 [打印本页]
作者: ljy_08 时间: 2017-2-4 13:38 标题: 批处理For语句里面嵌套goto,只执行一次就退出
大侠们帮忙看看,这个For语句为啥执行一次就退出了呢?
测试发现如果把里面的goto语句删除的话就能按要求循环执行,但是只要进入那个if语句就只能执行一次后退出for.
为什么呢?想了很久了。求教。
作者: B魔方大人 时间: 2017-2-4 13:44
本帖最后由 B魔方大人 于 2017-2-4 13:45 编辑
举个例子你就明白了- @echo off&setlocal enabledelayedexpansion
- for /l %%a in (0,1,20) do (
- set a=%%a
- :aaa
- echo !a! %%a
- pause
- if !a!==5 goto :aaa
- )
复制代码
作者: ljy_08 时间: 2017-2-4 13:53
回复 2# B魔方大人
大侠,还是比较迷惑,能详细说明下不?
作者: /zhqsystem/zhq 时间: 2017-2-4 17:15
本帖最后由 /zhqsystem/zhq 于 2017-2-4 17:18 编辑
for里执行goto就是跳出for,只能执行一条goto以前的所有命令行,建议用call
例子:for.....do call:1
pause
:1
....
goto:eof
如果只要达到要求就跳出建议用goto以表示终止
例子:
call:2
pause
:2
for......do if.....goto:eof
goto:eof&&rem这句建议不删
特别说明:
标签内不会去引用for的主体变量另设置一个变量达到引用效果
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |