![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 10:23 |
共 48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 双重FOR循环中如何只退出第二层循环 |
| 可打印版本 1,335 / 5 |
| 第1楼 bd123456789 | 发表于 2007-07-09 17:14 |
| 中级用户 发帖 216 积分 360 | |
|
双重FOR循环中如何只退出第二层循环 双重FOR循环中如何在一定条件下退出第二层循环,并继续执行第一层循环
我有两个文件,可附件下载 1.txt 19 2 8 8 8.168 888.0888.1888 19 3 8 8 8.178 888.0888.1888 19 4 8 8 8.188 888.0888.1888 19 5 8 8 8.198 888.0888.1888 19 6 8 8 8.108 888.0888.1888 2.txt 19 7 8 8 8.168 888.0888.1888 19 8 8 8 8.178 888.0888.1888 19 9 8 8 8.188 888.0888.1888 19 0 8 8 8.198 888.0888.1888 19 1 8 8 8.108 888.0888.1888 提取.bat for %%f in (*.txt) do ( type %%f setlocal enabledelayedexpansion set p=0 FOR /F "tokens=1,2" %%a IN (%%f) DO ( set /a p=!p!+1 echo %%a%%b >>输出.txt if !p! equ 3 goto:eof →注意这句 ) ) pause 我的目的是提取两个文本的前三行的指定的字符,所以在对第一次循环中,在读取1.txt前三行时退出对1.txt的循环操作,但是继续执行外层循环,以开始对2.txt进行处理,也并只读取它的前三行,然后结束 问题: 上述代码运行后,只显示文本1前三行相应的内容,而并没有处理文本2的内容? 主要想法: 是不是我在FOR循环中直接使用GOTO:EOF,将退出所有的循环 有什么好的办法,使只退出第二层循环,而继续执行外层循环!!!! 请教高手 [ Last edited by bd123456789 on 2007-7-9 at 05:16 PM ] 附件 试验文件.rar (458 bytes) |
|
| 第2楼 lxmxn | 发表于 2007-07-09 18:01 |
| 版主 发帖 4,938 积分 11,386 | |
|
因为在执行第一个文件时,有一个goto :EOF,这将导致退出批处理,所以只有第一个文件的处理结果。
试试下面这个? |
|
| 第3楼 bd123456789 | 发表于 2007-07-09 19:45 |
| 中级用户 发帖 216 积分 360 | |
|
多谢了
你讲的方法是可行的,不过其适用性不太强,如果能够使用GOTO 语句就可能更好了,不过,我找不到答案,呵呵! |
|
| 第4楼 lxmxn | 发表于 2007-07-09 20:45 |
| 版主 发帖 4,938 积分 11,386 | |
|
也可以goto的。
|
|
| 第5楼 lxmxn | 发表于 2007-07-09 20:48 |
| 版主 发帖 4,938 积分 11,386 | |
| 第6楼 bd123456789 | 发表于 2007-07-09 21:57 |
| 中级用户 发帖 216 积分 360 | |
|
高招!
把我的双重循环,通过调用变成了单个循环执行,然后... 我查阅了一些资料 据说在FOR循环中如果使用GOTO,将中止所有嵌套的循环 也就是说FOR循环在一定条件下中途不得退出! 但你的拆分调用方法,化解了这一矛盾 测试正确! [ Last edited by bd123456789 on 2007-7-9 at 10:01 PM ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |