batch-file - 使用管道运算符时出现错误时批处理脚本终止

标签 batch-file error-handling pipe

我需要对涉及管道运算符的操作执行错误处理(检查 ERRORLEVEL),但脚本不是以非零 ERRORLEVEL 继续,而是立即终止。我怎样才能避免这种行为?

考虑以下示例。 (请注意,这是一个简化的构造示例来说明问题 - 不是一个有意义的脚本)

someinvalidcommand
echo nextline

这将导致

> 'someinvalidcommand' is not recognized as ... command...
> nextline

换句话说,脚本在错误发生后继续执行。 现在考虑

echo firstline | someinvalidcommand
echo nextline

这只会导致

> 'someinvalidcommand' is not recognized as ... command ...

也就是说,它在评估“echo nextline”之前终止

为什么会出现这种行为以及如何避免它?目的是执行类似的操作

someoperation | someotheroperation
IF NOT %ERRORLEVEL% == 0 (
    handleerror
)

但是错误处理没有任何效果,因为它提前停止了。

最佳答案

将其委托(delegate)给另一个 cmd 实例

cmd /c" someoperation | someotheroperation "
if errorlevel 1 (
    handleerror
)

关于batch-file - 使用管道运算符时出现错误时批处理脚本终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30889211/

相关文章:

batch-file - 赛特此时出乎意料? (批)

Python 到 .bat 的转换

windows - 如何在 Windows 的变量中获取命令的结果?

linux - 如何使用批处理脚本或linux cmmand将特定扩展文件从目录和子目录复制到其他目录

c - 读取写入管道的信息后无法退出 while 循环

c - fgets 无法捕获 tty 设备的输出

php - paypal IPN php 脚本- mysql 不工作?

c - 我在 C 中得到 "the error expression must be a modifiable lvalue"

php - 引用 - 这个错误在 PHP 中意味着什么?

linux - 为什么 "which cp | ls -l "不被视为 "ls -l $(which cp)"?