Board logo

标题: dos中只能用goto来表示条件循环吗? [打印本页]

作者: ssyfzy     时间: 2007-10-6 20:28    标题: dos中只能用goto来表示条件循环吗?

所谓条件循环是指满足某一条件执行循环

:ag
....
if ... goto ag


但是在for语句中

for %%f in (*.txt) do (

:ag
...

if ... goto ag
)

在for中似乎不能用goto来循环(你可以试试),那怎么来表达条件循环呢?
作者: lxmxn     时间: 2007-10-6 22:42
1、用if ... for;
2、用 for... if ... call;
作者: huangxiaohao     时间: 2007-10-6 22:49
正在学习中......
作者: ssyfzy     时间: 2007-10-7 06:39
二楼能说说具体的格式吗?
比如:
:ag
set/a p+=1
if exist !p!.txt goto ag

[ Last edited by ssyfzy on 2007-10-7 at 06:50 AM ]
作者: 不得不爱     时间: 2007-10-7 12:13
for %%f in (*.txt) do (

:ag
...

if ... goto ag
)
改为:
for %%f in (*.txt) do (

call :ag
)
goto ......
:ag
...

if ... goto ag
就可以了
作者: ssyfzy     时间: 2007-10-7 12:46
谢谢5楼,
另外请问3楼说的
if...for

for..if...call 是什么?
还有
goto ag跟call :ag是一样的吗?

[ Last edited by ssyfzy on 2007-10-7 at 12:53 PM ]
作者: 不得不爱     时间: 2007-10-7 16:56
if...for 就是if 条件 for %%.......
for..if...call 就是FOR %%...IF 条件 CALL :标号
goto ag跟call :ag是不一样的,goto ag 就跳到标号ag call :ag就是调用标号ag,标号ag后的命令执行完了后返回到call :ag后面的语句
作者: lxmxn     时间: 2007-10-7 17:34
goto 和 call 一个很重要的区别是call可以带参数,而goto不行。
作者: ssyfzy     时间: 2007-10-7 18:39
如果有两个call :标号语句怎么写?
比如:
call :flag1
call :flag2

.....

:flag1

....

(call :flag1到此为止)
:flag2
.....

我想让call:flag1只执行flag1部分,也就是只执行到:flag2之前
该怎么写呢?
作者: 不得不爱     时间: 2007-10-7 18:41
call :flag1
call :flag2

.....

:flag1

....

goto :eof
:flag2
.....
goto :eof
作者: lxmxn     时间: 2007-10-7 18:41
在flag1部分最后加一个goto :EOF。