中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-26 00:13
共 47,813 主题排行 / 349,918 发帖 / 今日 0 篇 / 48,275 会员排行
DOS批处理 & 脚本技术(批处理室) » [已解决]如何中断当前FOR循环继续后面的循环
可打印版本  1,382 / 5
第1楼 JasonMing 发表于 2007-10-13 20:21
初级用户 发帖 42 积分 116
[已解决]如何中断当前FOR循环继续后面的循环
我有一个二级菜单象这样:
A -- 文件
1. 读文件系统 2. 写文件系统
B -- 互连网
1. 服务端 2.客户端
C -- 多媒体
1.相机 2.录音


现在我弄一个选择系统,开始时屏幕提示输入分类(ABC,可以连续选择多个),然后提示输入各个分类中的项目,然后输出到配置文件

现在代码中有点问题,如果输入的值不在ABC之内就会导致输出配置文件时中有错误的信息,我想在FOR循环中判断如果输入的值不合法就中断当前循环但是要继续下一循环,代码如下,蓝色字就是代表我不知道怎么做的地方~~~

set menua=文件
set menub=互连网
set menuc=多媒体
set /p class=请输入分类:
setlocal EnableDelayedExpansion
for /l %%i in (0,1,2) do (
set cls=!class:~!%%i,1!
for /f "delims=" %%j in ('echo menu!cls!') do set menu=!%%j!
if !menu!.==. (这里需要终止当前循环,但是要继续进行下一个)
set /p itm=请输入“!menu!”中的项:
for /l %%k in (0,1,1) do (
set output=!itm:~%%k,1!
echo !cls!!output!>>config.ini
)
)

蓝色字的地方我试过用BREAK命令,不过好象无效,请高手们回答一下,如何做到这一点,还有我代码里面有什么错误请帮忙改正,谢谢各位~~~

[ Last edited by JasonMing on 2007-10-14 at 11:33 AM ]
第2楼 lxmxn 发表于 2007-10-13 21:04
版主 发帖 4,938 积分 11,386

if not !menu!.==. (
set /p itm=请输入“!menu!”中的项:
for /l %%k in (0,1,1) do (
set output=!itm:~%%k,1!
echo !cls!!output!>>config.ini
)
)

这样试试呢?
第3楼 lxmxn 发表于 2007-10-13 21:07
版主 发帖 4,938 积分 11,386
蓝色字的地方我试过用BREAK命令,不过好象无效


break /? 命令帮助中有这样的说明:

这个命令是为了与 DOS 系统的兼容而保留的,在 Windows XP
里不起作用。


[ Last edited by lxmxn on 2007-10-13 at 09:08 PM ]
第4楼 JasonMing 发表于 2007-10-13 21:38
初级用户 发帖 42 积分 116
其实我整段代码不止这么短,这里只是一个精简例子,如果用if括起来会很麻烦的···

能不能用goto :eof去终止当前的循环而不影响下面的循环???
第5楼 lxmxn 发表于 2007-10-13 23:28
版主 发帖 4,938 积分 11,386
在推荐在for命令内部使用标签goto,我没有用过。

可以做一个在for命令外面的标签,然后call调用,如果条件不成立就goto :EOF。
第6楼 JasonMing 发表于 2007-10-14 10:53
初级用户 发帖 42 积分 116
谢谢版主的回答···
我就是怕转跳到内部标签不会继续当前这一循环而一直往下执行,不过最后还是用了if去判断了,其他的我试试看看行不行,现在这里是弄好的代码的一部分~~~



[ Last edited by JasonMing on 2007-10-14 at 10:57 AM ]
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023