为了账号安全,请及时绑定邮箱和手机立即绑定

以下情况,想问为什么会执行到copy d:\12.txt f:\这个语句?

以下情况,想问为什么会执行到copy d:\12.txt f:\这个语句?

慕勒3428872 2022-03-24 20:15:49
@ECHO OFFIF EXIST d:\12.txt (GOTO _COPY) else (GOTO _DONE):_COPYCOPY d:\12.txt e:\:_DONEcopy d:\12.txt f:\做成批处理文件后,运行后,怎么f盘也优12.txt文件啊我才发现copy d:\12.txt f:\这句话本身优矛盾,不过这不影响我想提的那个问题,我想问为什么会执行到copy d:\12.txt f:\这个语句
查看完整描述

2 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

当然,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

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

查看完整回答
反对 回复 2022-03-28
?
喵喔喔

TA贡献1735条经验 获得超5个赞

@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:\

查看完整回答
反对 回复 2022-03-28
  • 2 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信