标题: for /l 无法中途跳出吗?
[打印本页]
作者: 1234567
时间: 2007-8-16 17:53
标题: 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?
作者: wudixin96
时间: 2007-8-16 17:56
for不能使用goto跳转的。
[
Last edited by wudixin96 on 2007-8-16 at 06:17 PM ]
作者: 1234567
时间: 2007-8-16 18:01
如果说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
仅仅只是数字小了些.
作者: wudixin96
时间: 2007-8-16 18:08
自己把@echo off注释了,看一下就知道了
作者: 1234567
时间: 2007-8-16 18:14
也就是说for非要循环完毕,才能goto
作者: kernelv
时间: 2007-8-16 20:07
可以跳转,只不过它要等
循环全部结束后才跳。
for /l %%i in (1,1,3) do (
if %%i equ 2 set v=%%i & goto :loop
)
echo %v%
:loop
echo 已经跳转
pause
如果没有跳,它会显示变量v的值。
作者: scriptor
时间: 2007-8-19 01:07
这个和数字大小没有关系吧
我用的是5000,也照样按要求跳出了.
作者: scriptor
时间: 2007-8-19 01:07
Quote: |
Originally posted by 1234567 at 2007-8-16 18:14:
也就是说for非要循环完毕,才能goto |
|
不要等吧!
是不是你的程序有错?
作者: knoppix7
时间: 2007-8-19 12:15
FOR 先把所有的可能列举完。
然后再执行
作者: dnntgmfd
时间: 2009-5-12 22:15
正好我也有个疑惑
for /l %%a in (1 1 10) do (
if "%%a"=="3" ( echo 你好)
) else ( start cmd.exe
)
)
我的理解是假如变量a等于3,显示字符串,,否则就打开9个cmd窗口,可为什么,它总是打开10个呢?
难道是我哪里理解错了
作者: radem
时间: 2009-5-13 12:01
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窗口
作者: Hanyeguxing
时间: 2009-5-14 00:55
跳是肯定可以跳的,就用楼主的代码,在P4,1.8G,256Mb的机器上,需要等待37秒。。。。
估计,终止到1000000,需要37秒,终止到100000需要3.7秒,终止到10000需要0.37秒。。。如果终止到10000000需要6、7分钟,如果终止到100000000需要1个小时左右。。。。
问题就出在楼主没耐心上,哈哈