2017-05-08 91 views
2

我目前正在使用旧的旧版MS-DOS 6.22系统,现在需要调用不同的批处理文件,具体取决于C:上是否存在文件。
我放在AUTOEXEC.BAT如下:IF EXIST ELSE在DOS中被忽略的问题6.22批处理文件

IF EXIST C:\IMGOK.TXT (BOOT.BAT) ELSE (LOADIMG.BAT) 

东西必须处于关闭状态,因为它似乎忽略了这一说法,并呼吁无论是我指定的.bat文件中。这与IMGOK.TXT是否存在无关。 IMGOK.TXT是通过
创建的一个空的文本文件COPY NUL> IMGOK.TXT
我已经尝试过和没有围绕语句的括号。

我是否错过了如何使用此IF EXIST ELSE语句? 非常感谢您的帮助。

编辑:明白了,不能在DOS批处理文件中使用ELSE。必须将IF EXISTS和IF NOT EXISTS用于我的不同呼叫。谢谢!

+1

你试过使用'call'而不是直接加载'.bat'文件? –

+2

MS-DOS不支持ELSE或用圆括号分组命令。 –

+0

我只是给了一个镜头,没有运气:如果存在C:\ IMGOK.TXT CALL BOOT.BAT ELSE CALL LOADIMG.BAT –

回答

4

MS-DOS不支持ELSE关键字。它也不支持使用圆括号来分组命令。这意味着如果文件C:\IMGOK.TXT存在,则使用参数ELSE (LOADIMG.BAT)执行命令(BOOT.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