在 DOS 6.22 批处理文件中忽略 IF EXIST ELSE 的问题
Issues with IF EXIST ELSE being ignored in DOS 6.22 Batch file
我目前正在使用旧的遗留 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。谢谢!
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
我目前正在使用旧的遗留 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。谢谢!
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