如果在Windows批处理/ then / else语句

在一个shell脚本中,我有以下代码:

if echo Mr.32 ; then echo Success else echo Failed exit fi 

什么是Windowsbatch file的等效语法?

我很难想象ECHO会因为返回的ERRORLEVEL不等于0而失败。如果输出已被重定向到一个文件并且目标驱动器已满,那么可能会失败。

CptHammer使用ERRORLEVEL发布了一个很好的解决方案,尽管它不必要地使用了GOTO。 可以在没有GOTO的情况下使用:

 ECHO Mr.32 if errorlevel 1 ( echo Failed exit /b ) else ( echo Success ) 

有一个更简单的方法来采取行动成功或失败的任何命令。

 command && success action || failure action 

在你的情况

 ECHO Mr.32&& ( echo Success ) || ( echo Failed exit /b ) 

我认为这样的事情可能会诀窍:

 REM run the command ECHO Mr.32 IF ERRORLEVEL 1 GOTO failLabel :successLabel REM put code to execute in case of success here. ECHO Success GOTO endLabel :failLabel REM put code here that should be executed in case of failure. ECHO Failed :endLabel 

这假设您想要测试的命令(这里是:回声MR.32)在成功时返回0,在失败时返回更高的值(注意:大多数Windows操作系统中的回声将不会返回任何内容,因此,在此脚本中测试的实际值可能最后执行的命令返回的代码可能比使用命令“DIR someFile.txt”更好一些,如果somefile.txt存在,将会返回0,否则返回1。

dbenham指出,这个结构使用了很多GOTO。 这是因为这个GOTO结构是所有Windows版本中唯一可以理解的结构。 更紧凑的版本随着时间的推移而出现,但它们只能在最近的Windows版本上运行