如何在Windows上获取管道和可执行文件的返回值

如何在Windows上获取管道和可执行文件的返回值

我正在运行一些涉及管道传输到我的可执行文件的单元测试,就像这样。

cat text.txt | my_exe --options

运行这些命令,我​​如何获取的返回值my_exe?即使my_exe返回失败,返回值也会被丢弃。我假设的返回值cat是优先的。

换种方式问,如何执行上述管道命令以给出相同的返回值:

cat text.txt && my_exe --options

谢谢!

编辑:使用传统的cmd

答案1

cmd确实将管道的退出状态设置为最右侧的组件,并且其他组件(或任何组件)不被“优先考虑”甚至不被考虑。观察:

c:\temp>echo exit 42 | cmd >NUL

c:\temp>echo %errorlevel%
42


c:\temp>cmd/c echo exit 42 | cmd >NUL

c:\temp>echo %errorlevel%
42


c:\temp>cmd/c "echo exit 42 && exit 17" | cmd >NUL

c:\temp>echo %errorlevel%
42


c:\temp>cmd/c exit 17 | cmd/c exit 0

c:\temp>echo %errorlevel%
0


c:\temp>cmd/c exit 11 | cmd/c exit 22 | cmd/c exit 33

c:\temp>echo %errorlevel%
33


c:\temp>cmd/c exit 11 | cmd/c exit 22 | cmd/c echo GOOD
GOOD

c:\temp>echo %errorlevel%
0

如果您得到了不同的结果,那么您所做的一定与您在 Q 中所展示的不同,但由于我们不知道那是什么,因此不可能提出任何有用的建议。

相关内容