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

Batch script terminates in case of error when using pipe operator

我需要对涉及管道运算符的操作执行错误处理(检查 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
)

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

委托给另一个cmd实例

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