中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: for /l 无法中途跳出吗? 上一主题 | 下一主题
1234567
新手上路





积分 8
发帖 3
注册 2007-8-15
状态 离线
『楼 主』:  for /l 无法中途跳出吗?

我写了个代码,如下:
for /l %%i in (1 1 1000000) do (
   echo %%i
   if %%i equ 2 set var=%%i&goto loop
)
:loop
echo %var%
pause
为何屏幕显示到2的时候就不动了呢?难道它非要循环到1000000才goto?

2007-8-16 17:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 2 楼』:  

for不能使用goto跳转的。

[ Last edited by wudixin96 on 2007-8-16 at 06:17 PM ]

2007-8-16 17:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
1234567
新手上路





积分 8
发帖 3
注册 2007-8-15
状态 离线
『第 3 楼』:  

如果说for不能用goto那么请问这段代码怎么解释?
@echo off
for /l %%i in (1 1 100) do (
   echo %%i
   if %%i equ 2 set var=%%i&goto loop
)
echo 没有跳转
pause
:loop
echo 已经跳转 %var%
pause
仅仅只是数字小了些.

2007-8-16 18:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 4 楼』:  

自己把@echo off注释了,看一下就知道了

2007-8-16 18:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
1234567
新手上路





积分 8
发帖 3
注册 2007-8-15
状态 离线
『第 5 楼』:  

也就是说for非要循环完毕,才能goto

2007-8-16 18:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
kernelv
初级用户





积分 47
发帖 24
注册 2007-1-9
状态 离线
『第 6 楼』:  

可以跳转,只不过它要等循环全部结束后才跳。
for /l %%i in (1,1,3) do (
   if %%i equ 2  set v=%%i & goto :loop
)
echo %v%
:loop
echo 已经跳转
pause
如果没有跳,它会显示变量v的值。

2007-8-16 20:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 7 楼』:  

这个和数字大小没有关系吧

我用的是5000,也照样按要求跳出了.

2007-8-19 01:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by 1234567 at 2007-8-16 18:14:
也就是说for非要循环完毕,才能goto

不要等吧!

是不是你的程序有错?

2007-8-19 01:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
knoppix7
银牌会员





积分 1287
发帖 634
注册 2007-5-2
来自 cmd.exe
状态 离线
『第 9 楼』:  

FOR 先把所有的可能列举完。
然后再执行

2007-8-19 12:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dnntgmfd
初级用户





积分 85
发帖 52
注册 2009-1-10
来自 湘乡
状态 离线
『第 10 楼』:  

正好我也有个疑惑
for /l %%a in (1 1 10) do (
if "%%a"=="3" ( echo 你好)
) else ( start cmd.exe  
)
)
我的理解是假如变量a等于3,显示字符串,,否则就打开9个cmd窗口,可为什么,它总是打开10个呢?
难道是我哪里理解错了

2009-5-12 22:15
查看资料  发送邮件  发短消息 网志  OICQ (527385656)  编辑帖子  回复  引用回复
radem
高级用户

CMD感染者


积分 691
发帖 383
注册 2008-5-23
状态 离线
『第 11 楼』:  



  Quote:
Originally posted by dnntgmfd at 2009-5-12 10:15 PM:
正好我也有个疑惑
for /l %%a in (1 1 10) do (
if "%%a"=="3" ( echo 你好)
) else ( start cmd.exe  
)
)
我的理解是假如变量a等于3,显示字符串,,否则就 ...

代码有问题,应该:
@echo off
for /l %%a in (1 1 10) do (
if "%%a"=="3" (
echo 你好
) else (
start cmd.exe
)
)
pause
打开10个窗口,其中1个显示字符串“你好”、9个CMD窗口



2009-5-13 12:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 12 楼』:  

跳是肯定可以跳的,就用楼主的代码,在P4,1.8G,256Mb的机器上,需要等待37秒。。。。
估计,终止到1000000,需要37秒,终止到100000需要3.7秒,终止到10000需要0.37秒。。。如果终止到10000000需要6、7分钟,如果终止到100000000需要1个小时左右。。。。
问题就出在楼主没耐心上,哈哈

2009-5-14 00:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: