如何在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

如果您得到不同的結果,您必須做一些與問題中顯示的不同的事情,但由於我們不知道那是什麼,所以不可能提出任何有用的建議。

相關內容