![So erhalten Sie den Rückgabewert von Pipe und ausführbarer Datei unter Windows](https://rvso.com/image/1703331/So%20erhalten%20Sie%20den%20R%C3%BCckgabewert%20von%20Pipe%20und%20ausf%C3%BChrbarer%20Datei%20unter%20Windows.png)
Ich führe einige Unit-Tests aus, die eine Weiterleitung in meine ausführbare Datei beinhalten, wie folgt.
cat text.txt | my_exe --options
Wie erhalte ich beim Ausführen dieser Befehle den Rückgabewert von my_exe
? Auch wenn my_exe
ein Fehler zurückgegeben wird, wird der Rückgabewert verworfen. Ich gehe davon aus, dass cat
stattdessen der Rückgabewert von priorisiert wird.
Anders gefragt: Wie führe ich den obigen Pipe-Befehl aus, um den gleichen Rückgabewert zu erhalten wie:
cat text.txt && my_exe --options
danke!
Bearbeiten: Verwenden des traditionellen cmd
.
Antwort1
cmd
Setzt den Beendigungsstatus für eine Pipeline auf die Komponente ganz rechts und die (oder jede andere) andere Komponente wird NICHT „priorisiert“ oder überhaupt berücksichtigt. Beachten Sie:
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
Wenn Sie ein anderes Ergebnis erhalten, müssen Sie etwas anderes tun, als in Ihrer Frage angegeben. Da wir jedoch keine Ahnung haben, was das ist, ist es unmöglich, nützliche Vorschläge zu machen.