[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理For语句里面嵌套goto,只执行一次就退出

大侠们帮忙看看,这个For语句为啥执行一次就退出了呢?
测试发现如果把里面的goto语句删除的话就能按要求循环执行,但是只要进入那个if语句就只能执行一次后退出for.
为什么呢?想了很久了。求教。

本帖最后由 /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的主体变量另设置一个变量达到引用效果
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 2# B魔方大人


    大侠,还是比较迷惑,能详细说明下不?

TOP

本帖最后由 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. )
复制代码

TOP

返回列表