【发布时间】:2019-07-24 19:56:50
【问题描述】:
在 bash 脚本中,与 set -o errexit 等效的 Windows 批处理文件是什么?
我有一个很长的批处理文件,其中包含要在 Windows 命令行上运行的不同程序...基本上它是一个展开的 make 文件,其中包含需要运行以在长命令序列中构建 exe 的每个编译器命令。
这种方法的问题是我希望它在脚本中的命令生成的第一个非零返回码上退出批处理命令。
据我所知,Windows 批处理文件存在一个问题,即它们不会在第一个错误时自动退出,而无需在每个命令之间添加大量重复的样板代码来检查非零返回代码并退出脚本。
我想知道的是,有没有类似于 bash 的 set -o errexit for Windows cmd.exe 的选项?或者可能是一种可以消除过多样板错误检查代码的技术......就像你设置它一次,然后如果命令返回非零返回代码,它会自动退出,而不会在你的脚本中添加一堆垃圾来执行此操作给你。
(我也接受 PowerShell 选项而不是 cmd.exe,除了 PowerShell 对旧的 unix 样式的命令标志不是很好,例如:-dontbreak -y ... 破坏这些命令而不向您的命令添加垃圾引号或转义字符之类的行...不是我想弄乱的东西...)
【问题讨论】:
-
AFAIK,没有等价物。批处理文件测试 ERRORLEVEL 并在它不是可接受的值时退出。见What is the Windows/cmd.exe equivalent of Linux/bash's $?
标签: powershell cmd