可执行文件返回的 ERRORLEVEL 是否对批处理脚本中的错误处理可靠

are ERRORLEVEL returned by executables reliable for error handling in batch scripts

这是在 Windows 中的可执行文件编辑的 ERRORLEVEL return 上讨论的一般主题。我正在编写一个脚本来将 Apache HTTP 服务器安装为 windows 服务。

httpd -k install 

httpd 可执行文件 returns

是否可以根据一般可执行文件的 ERRORLEVEL return 处理错误?我们是否需要依靠其他方式来处理 return 我们在批处理脚本 运行 中的命令代码

每个程序员都可以根据自己的喜好自由处理退出代码(return 由 %errorlevel% 编辑)。有一个普遍的共识,即 0 表示 "success",而任何非零值表示 "an error of some sort"。但你不能依赖它。

一个很好的例子是ping。如果您在自己的网络中 ping 一个不存在的 IP,它 returns
Answer from <localhost>: destination unreachable.
您可能会认为,这是不成功的,因此期望错误级别为非零,但显然程序员认为 "well, there is an answer, so it's successful"

有些内部命令不会触及错误级别,有些将始终 return 零,有些将始终 return 1robocopy,感谢 aschipfl)。
可执行文件 do 设置错误级别(感谢 Aacini),但 如何 取决于程序员。有些总是零,其中大多数实际上是可用的错误级别。

很抱歉不得不告诉您:您不能依赖 %errorlevel% 的一般规则。您必须检查每一个 command/executable(通过文档(如果您很幸运)或尝试)