So erhalten Sie den Rückgabewert von Pipe und ausführbarer Datei unter Windows

So erhalten Sie den Rückgabewert von Pipe und ausführbarer Datei unter Windows

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_exeein Fehler zurückgegeben wird, wird der Rückgabewert verworfen. Ich gehe davon aus, dass catstattdessen 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

cmdSetzt 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.

verwandte Informationen