在 DOS 6.22 批处理文件中忽略 IF EXIST ELSE 的问题
Posted
技术标签:
【中文标题】在 DOS 6.22 批处理文件中忽略 IF EXIST ELSE 的问题【英文标题】:Issues with IF EXIST ELSE being ignored in DOS 6.22 Batch file 【发布时间】:2017-10-07 00:09:15 【问题描述】:我目前正在使用旧的遗留 MS-DOS 6.22 系统,现在需要根据 C: 上是否存在文件来调用不同的批处理文件。 我在 AUTOEXEC.BAT 中放置了以下内容:
IF EXIST C:\IMGOK.TXT (BOOT.BAT) ELSE (LOADIMG.BAT)
必须关闭某些东西,因为它似乎忽略了此语句并且没有调用我指定的任何 .BAT 文件。这与 IMGOK.TXT 是否存在无关。 IMGOK.TXT 是通过创建的空文本文件 复制 NUL>IMGOK.TXT 我已经尝试过在语句周围加括号和不加括号。
我是否缺少有关如何使用此 IF EXIST ELSE 语句的内容? 提前感谢您的帮助。
编辑:知道了,不能在 DOS 批处理文件中使用 ELSE。不得不为我的不同呼叫使用 IF EXISTS 和 IF NOT EXISTS。谢谢!
【问题讨论】:
您是否尝试过使用call
而不是直接加载.bat
文件?
MS-DOS 不支持 ELSE 或带括号的分组命令。
我只是试了一下,没有运气:IF EXIST C:\IMGOK.TXT CALL BOOT.BAT ELSE CALL LOADIMG.BAT
ELSE 就是这样。没有意识到 DOS 批处理文件不能使用 ELSE。
【参考方案1】:
MS-DOS 不支持 ELSE 关键字。它也不支持使用括号对命令进行分组。这意味着如果文件C:\IMGOK.TXT
存在,那么命令(BOOT.BAT
将使用参数ELSE (LOADIMG.BAT)
执行。由于您可能没有名为(BOOT.BAT
的文件,因此如果C:\IMGOK.TXT
存在则将导致错误,如果不存在则不执行任何操作。
解决问题的一个简单方法是使用两个 IF 语句:
IF EXIST C:\IMGOK.TXT BOOT.BAT
IF NOT EXIST C:\IMGOK.TXT LOADIMG.BAT
由于运行BOOT.BAT
将结束对AUTOEXEC.BAT
中命令的进一步处理,您也可以这样做:
IF EXIST C:\IMGOK.TXT BOOT.BAT
LOADIMG.BAT
【讨论】:
以上是关于在 DOS 6.22 批处理文件中忽略 IF EXIST ELSE 的问题的主要内容,如果未能解决你的问题,请参考以下文章
适用于 MS-DOS 6.22 或 5.0 的 INFORMIX ESQL/C 2.10.06E