Я хочу запустить команду и сохранить ее вывод и его код выхода, в разных файлах.
Вот что я делаю:
cmd.exe /C command 1> %TEMP%\output.log 2> %TEMP%\error.log && echo %ERRORLEVEL% > %TEMP%\status || echo %ERRORLEVEL% > %TEMP%\status
Если я не выполняю перенаправление вывода (в %TEMP%\output.log
и / или %TEMP%\error.log
), то код выхода сохраняется нормально. Однако, когда я запускаю строку, как показано выше больше чем единожды (просто вернитесь к предыдущей строке в командной строке и перезапустите ее), я получаю 0 в %TEMP%\status
независимо от реального кода выхода.
Что мне не хватает? Или, может быть, есть способ лучше?
То, что вы делаете, не сохранит код выхода, поскольку вы его не фиксируете. Самый простой способ - запустить команду из командного файла. Перенаправьте вывод как обычно и пусть командный файл сохранит значение ERRORLEVEL во втором файле.