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

[文本处理] 批处理双层循环如何跳出内循环而不跳出外循环?


  for  条件  do (


for 条件 do (

goto end

)
      :end
)

类似此类问题 , 但是这样是走不通的

请问如何解决

大概理解你的意思,是不是这样:

set "tmp="
for 条件 do (
     if not defined tmp (
           for 条件 do (
                做你要做的。。。
                满足条件后。。。 set "tmp=1"
           )
     ) else (
           做你该做的 或者不做
     )
)

TOP

在循环曾的最后一个语句处带标签可能会出错,你试着给:end后加上一个注释语句
for  条件  do (


for 条件 do (

goto end

)
      :end
      rem 。。。。
)

但是这并没有什么意义,因为当goto跳到那个标签处的时候已经和第一个for语句没有任何关系了,再也不循环了,

TOP

那该怎么办呢

我想从 内循环 中退出到 外循环 中做其他事情  该怎么办呢

TOP

我所知的最好办法就是条件判断,迭代是不可避免的,但是可以选择是否执行

TOP

刚刚测试一下 发现一个可行的办法

for do (
call :a
)

a:
for do (
goto end
)
:end
将内循环放在call中执行 就ok了

TOP

奶奶的 平时都是linux下工作 用bash或者其他的语言 window这还是第一次写bat脚本  忙的我燋头烂额

TOP

条件判断一,判断执行:
  1. @echo off
  2. for /l %%a in (1 1 100) do (
  3.     for /l %%b in (%%a 2 100) do if %%a gtr 20 echo %%a
  4. )
  5. pause
复制代码
条件判断二,更换语句:
  1. @echo off&setlocal enabledelayedexpansion 2>nul 3>nul
  2. for /l %%a in (1 1 10) do (
  3.     if %%a leq 5 (set "echo=echo error") else set "echo=cd z:"
  4.     for /l %%b in (%%a 2 10) do !echo!||echo bingo
  5. )
  6. pause
复制代码

[ 本帖最后由 zm900612 于 2011-3-13 17:33 编辑 ]

TOP

用goto虽然也是办法,但是效率太低了

TOP

返回列表