Batch file 使用管道操作符时,如果出现错误,批处理脚本将终止

Batch file 使用管道操作符时,如果出现错误,批处理脚本将终止,batch-file,error-handling,pipe,Batch File,Error Handling,Pipe,我需要对涉及管道操作符的操作执行错误处理(检查ERRORLEVEL),但脚本不是继续使用非零ERRORLEVEL,而是立即终止。我怎样才能避免这种行为 考虑下面的例子。(请注意,这是一个简化的构造示例来说明问题-不是一个有意义的脚本) 这将导致 > 'someinvalidcommand' is not recognized as ... command... > nextline 换句话说,脚本会在错误发生后继续。 现在考虑 echo firstline | someinvali

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

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

这将导致

> '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”
如果错误级别为1(
手杖
)
someoperation | someotheroperation
IF NOT %ERRORLEVEL% == 0 (
    handleerror
)