Board logo

标题: [其他] 批处理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 编辑

举个例子你就明白了
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (0,1,20) do (
  3. set a=%%a
  4. :aaa
  5. echo !a! %%a
  6. pause
  7. if !a!==5 goto :aaa
  8. )
复制代码

作者: 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://www.bathome.net/) Powered by Discuz! 7.2