在 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 的问题的主要内容,如果未能解决你的问题,请参考以下文章

在虚拟机下安装DOS 6.22为啥

适用于 MS-DOS 6.22 或 5.0 的 INFORMIX ESQL/C 2.10.06E

Windows批处理

DOS/BAT批处理if exist else 语句的几种用法

批处理文件使用 if 语句忽略环境变量

在VM虚拟机上怎么安装DOS6.22 ,急啊