有谁知道是否有一个Windowsbatch file相当于Unix停止错误“#!/ bin / sh -e”?
( http://www.turnkeylinux.org/blog/shell-error-handling )
在Windows中deviseshell(从MS-DOSinheritance)没有什么好方法可以做到你想要的。
一般来说,即使面对错误,CMD.EXE和COMMAND.COM仍会继续执行batch file。 检查您调用的程序的错误errorlevel是关于error handling的所有信息。 大多数格式不正确的shell命令将被视为要执行的程序(并且希望执行的任何程序都不会造成不好的结果)。
构造语法中的错误(如if exists或for将导致shell停止执行脚本。 考虑:
@echo off if not exits c:\foo.txt echo C:\foo.txt does not exist echo Continuing on
你永远不会看到Continuing on因为解释器会c:\foo.txt was unexpected at this time.错误c:\foo.txt was unexpected at this time. 。 不幸的是,没有办法像bash一样捕获和处理错误。 当你遇到这样的错误时,脚本停止死亡。
一般来说,Windowsshell中的error handling是非常复杂的。
一个有争议的不太可能的方式来立即停止一个批处理错误是使用每个“指令”,如:
复制%UNEXISTING%C:\ || (回声错误文件%UNEXISTING%不存在&EXIT / B 1)
用|| 其余的命令只有在前一个命令的错误级别不等于0的情况下才会执行。