标题: [其他] 为什么跳不出批处理死循环-for? [打印本页]
作者: lincc0519 时间: 2012-3-10 21:48 标题: 为什么跳不出批处理死循环-for?
以前看到本论坛有人用for /l %i in (0,0,0) do command [command-parameters]这句,后来我试用这用方法,后来发现用这种方法在后面的command里用goto命令无法跳出for循环指令- @echo off&setlocal enabledelayedexpansion&title 你能跳出去吗?
- set in=
- for /l %%a in (0,0,0) do (
- set /p input=请输入:
- echo !input!
- if !input!.==jump. goto jump
- )
- :jump
- echo 成功跳出!!!
- pause>nul
- exit
复制代码
作者: apang 时间: 2012-3-10 22:14
goto jump改成call :jump可以跳出
作者: lincc0519 时间: 2012-3-10 22:15
你试试看?
作者: lincc0519 时间: 2012-3-10 22:17
如果去掉最后的exit你再试试
作者: apang 时间: 2012-3-10 22:19
回复 3# lincc0519
你也试试,我的win7下试过了,呵呵
作者: apang 时间: 2012-3-10 22:28
如果去掉最后的exit你再试试
lincc0519 发表于 2012-3-10 22:17
删除exit跳不出了,call调用完又返回去,继续执行死循环了,呵呵。
作者: CrLf 时间: 2012-3-10 22:45
goto 是要等到 for 循环还是要迭代完毕才会发生跳转的,记得以前寒夜还是 batcher 举过一个例子:- @echo off
- for /l %%a in (1 1 1000) do goto test
- :test
- pause
复制代码
- @echo off
- for /l %%a in (1 1 100000) do goto test
- :test
- pause
复制代码
对比一下两则代码的延时时长
作者: lincc0519 时间: 2012-3-10 22:52
goto 是要等到 for 循环还是要迭代完毕才会发生跳转的,记得以前寒夜还是 batcher 举过一个例子:对比一下两 ...
CrLf 发表于 2012-3-10 22:45
如果for /l命令中的step不等0就可以跳出去,应该不是要等到迭代完成才能跳出!
作者: find 时间: 2012-3-10 22:58
回复 8# lincc0519
他说的迭代完成就是指不等于0的条件成立
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |