批处理文件,用于在其他使用IF,ELSE和ERRORLEVEL失败的情况下执行命令

时间:2015-09-07 09:50:03

标签: windows batch-file if-statement errorlevel

所以基本上我试图制作批处理文件,执行命令并成功执行该命令退出。但是如果它无法执行第一个命令,它应该运行第二个(备份)命令,然后退出。

例如,我想要一个.bat文件,在启动时删除某个目录中的文件,然后退出。但如果在尝试这样做时出错,它应该尝试删除不同目录中的另一个文件,然后退出。

让我们说,我创建了一个删除" a.txt"的批处理文件。从当前目录退出。但是如果它失败了,那么应该尝试删除" b.txt"并退出。但它应该删除b.txt,如果它没有删除a.txt。

我想在这样做时使用IF,ELSE和%ERRORLEVEL%。

这是我现在尝试使用的代码:

@echo off
del a.txt
IF %ERRORLEVEL% NEQ 0 (
del b.txt
) else (
ECHO victory
)

在上面的代码中,我使用了错误级别代码0,如果它不等于0(在成功执行命令时返回),则执行计划b。 现在它不会删除b.txt。

请帮助我创建一个稳定且有效的...

提前致谢

4 个答案:

答案 0 :(得分:0)

DEL为不存在的文件返回errorlevel 0,因此首先检查文件是否存在:

if exist a.txt (del a.txt & echo victory) else if exist b.txt del b.txt

答案 1 :(得分:0)

del如果无法删除文件,则不会返回错误级别。

在Win 8.x 32位

中测试

答案 2 :(得分:0)

检测del command is not so easy的结果 dbenham的解决方案构成了上面的链接:

3>&2 2>&1 1>&3 del "a.txt"|findstr . && (
 echo DEL failed 
 del "b.txt"
 color
)||(
 echo DEL succeeded
)

答案 3 :(得分:0)

@echo off
del a.txt
IF EXIST a.txt (
del b.txt
) else (
ECHO victory
)