Есть ли способ перенаправить вывод stderr из команды run с "start" в командной строке Windows?
У меня есть программа, для которой я хочу автоматизировать прогоны, так как для ее завершения требуется некоторое время. По какой-то причине он выводит все в stderr вместо stdout, и я хотел бы проверить его ход, поэтому мне нужно перенаправить вывод stderr в команду запуска.
Я попробовал это:
start "My_Program" "C:\Users\Me\my_program.exe" --some --presets --for
--my_program.exe --output "C:\Users\Me\output_file_for_my_program"
"C:\Users\Me\input_file_for_my_program" 2>"C:\Users\Me\my_program_output.log"
Но оказывается, что переадресация запускается при запуске, так что я получаю 0-байтовый файл с результатом start
а именно, ничего. Можно ли каким-либо образом привязать перенаправление вывода к выходу my_program?
Я экспериментировал с побегом, и ни ^2>
ни 2^>
похоже на работу. Любая помощь будет принята с благодарностью!
4 ответа
Попробуй это:
start "My_Program" "%SystemRoot%\System32\cmd.exe" /c ""C:\Users\Me\my_program.exe" --some --presets --for --my_program.exe --output "C:\Users\Me\output_file_for_my_program" "C:\Users\Me\input_file_for_my_program" 2>"C:\Users\Me\my_program_output.log""
Очевидно, что, не имея "Моей Программы" здесь, я не могу проверить это, по сути. Если мы примем, что встроенная команда "FIND.EXE" возвращает "Файл не найден - имя файла" на STDERR, у меня работает следующее:
start "My_Program" "%SystemRoot%\System32\cmd.exe" /c "find /v /i "blarg" "c:\not a real file.txt" 2> C:\stderr.txt"
Используйте /B переключатель. Новое окно не создается и перенаправления остаются, но команда выполняется в фоновом режиме, так же, как это необходимо.
start /B test.bat >test.txt <nul
test.bat:
@echo off
echo bbb
sleep 10
echo ccc
exit
Как насчет вызова вашей команды с перенаправлениями в командном файле и использования запуска в командном файле?
Я использовал следующую команду, и она работала:
start / affinity 2 / wait cmd.exe / C myprog.exe параметр1 параметр2 1^> .\a.log 2>> .\b.log
Ссылка: http://www.pcreview.co.uk/forums/redirect-standard-output-w-start-command-t1467634.html
Абхишек
Следующий синтаксис, кажется, помогает:
start /wait /b my_program.exe
Это запускает программу в фоновом режиме и ожидает ее завершения. Перенаправьте stdout и stderr по своему усмотрению:
start /wait /b my_program.exe > output.txt 2>&1