Как получить возвращаемое значение канала и исполняемого файла в Windows

Как получить возвращаемое значение канала и исполняемого файла в Windows

Я запускаю несколько модульных тестов, которые включают конвейеризацию в мой исполняемый файл, например, вот так.

cat text.txt | my_exe --options

Запуская эти команды, как мне получить возвращаемое значение my_exe? Даже если my_exeвозвращается сбой, возвращаемое значение отбрасывается. Я предполагаю, что возвращаемое значение catимеет приоритет вместо этого.

Если задать другой вопрос, как мне выполнить указанную выше команду pipe, чтобы получить то же возвращаемое значение, что и:

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

Если вы получаете другой результат, то, должно быть, вы делаете что-то не то, что указали в своем вопросе, но поскольку мы понятия не имеем, что именно, невозможно дать какие-либо полезные рекомендации.

Связанный контент