找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28911|回复: 8

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

[复制链接]
发表于 2011-3-13 16:42:23 | 显示全部楼层 |阅读模式

  for  条件  do (


for 条件 do (

goto end

)
      :end
)

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

请问如何解决
发表于 2011-3-13 16:58:22 | 显示全部楼层
大概理解你的意思,是不是这样:

set "tmp="
for 条件 do (
     if not defined tmp (
           for 条件 do (
                做你要做的。。。
                满足条件后。。。 set "tmp=1"
           )
     ) else (
           做你该做的 或者不做
     )
)
发表于 2011-3-13 17:04:08 | 显示全部楼层
在循环曾的最后一个语句处带标签可能会出错,你试着给:end后加上一个注释语句
for  条件  do (


for 条件 do (

goto end

)
      :end
      rem 。。。。
)

但是这并没有什么意义,因为当goto跳到那个标签处的时候已经和第一个for语句没有任何关系了,再也不循环了,
 楼主| 发表于 2011-3-13 17:11:04 | 显示全部楼层
那该怎么办呢

我想从 内循环 中退出到 外循环 中做其他事情  该怎么办呢
发表于 2011-3-13 17:18:35 | 显示全部楼层
我所知的最好办法就是条件判断,迭代是不可避免的,但是可以选择是否执行
 楼主| 发表于 2011-3-13 17:23:35 | 显示全部楼层
刚刚测试一下 发现一个可行的办法

for do (
call :a
)

a:
for do (
goto end
)
:end
将内循环放在call中执行 就ok了
 楼主| 发表于 2011-3-13 17:25:36 | 显示全部楼层
奶奶的 平时都是linux下工作 用bash或者其他的语言 window这还是第一次写bat脚本  忙的我燋头烂额
发表于 2011-3-13 17:31:15 | 显示全部楼层
条件判断一,判断执行:
  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 编辑 ]
发表于 2011-3-13 17:32:15 | 显示全部楼层
用goto虽然也是办法,但是效率太低了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 05:54 , Processed in 0.020018 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表