关于dos中goto语句的,帮帮忙啊,

来源:百度知道 编辑:UC知道 时间:2024/06/21 23:48:31
@ECHO OFF
IF EXIST d:\12.txt (GOTO _COPY) else (GOTO _DONE)
:_COPY
COPY d:\12.txt e:\
:_DONE
copy d:\12.txt f:\
做成批处理文件后,运行后,怎么f盘也优12.txt文件啊
发完帖子,我才发现copy d:\12.txt f:\这句话本身优矛盾,不过这不影响我想提的那个问题,我想问为什么
会执行到copy d:\12.txt f:\这个语句

当然,DOS下的GOTO语句只是转向,而非选择,也就是说,当d盘存在12.txt时,会转到_COPY标号处执行,当然向下执行时,同时会执行时_DONE语句的,因为goto是转到执行,而不是不执行以下含有标号的语句的。

但我怎么也没有想通过,如果条件中d盘不存在12.txt文件时,会转到_DONE处执行,这时你怎么去拷贝d盘中的12.txt文件呢?真还有这样的条件吗?

一楼的方案不错,它是以退出DOS视窗为代价的。真正的单分支结构这样写才行:

@ECHO OFF
IF EXIST d:\12.txt (GOTO _COPY) else (GOTO _DONE)
:_COPY
COPY d:\12.txt e:\
GOTO _Exit
:_DONE
copy d:\12.txt f:\
:_EXIT

这样只要保证进入上一分支时进行再次的转向就可以了!

@ECHO OFF
IF EXIST d:\12.txt (GOTO _COPY) else (GOTO _DONE)
:_COPY
COPY d:\12.txt e:\
exit
:_DONE
copy d:\12.txt f:\