Ричард, ваш «принятый ответ» слишком длинный и слишком неправильный.
Краткий ответ на ваш вопрос (как в настоящее время указано в вашем последнем предложении: «Как мне это сделать в Windows?» ):
Точно так же, как вы делаете это в Linux!
Но я также дам вам длинный ответ.
Ваше перенаправление 2>&1
работает в окне cmd.exe
таким же образом. Я даже перепроверил это прямо сейчас, так как мой опыт cmd.exe немного ржавый. Я использовал эту команду Ghostscript (специально предназначенную для вывода на стандартный вывод, а также на стандартный вывод):
gswin32c -sDEVICE=nullpage -dFirstPage=12 -dLastPage=11 my-20-page-test.pdf
Я получил весь ожидаемый вывод в окно оболочки. Тогда я сделал:
gswin32c -sDEVICE=nullpage -dFirstPage=12 -dLastPage=11 my-20-page-test.pdf ^
1>stdout.log
и stderr все еще печатались в окне, но stdout.log имел «отсутствующий» исходный вывод. Затем я сделал:
gswin32c -sDEVICE=nullpage -dFirstPage=12 -dLastPage=11 my-20-page-test.pdf ^
2>stderr.log
и stdout теперь выводятся в окно, а stderr.log содержит остальные сообщения Ghostscript. Далее:
gswin32c -sDEVICE=nullpage -dFirstPage=12 -dLastPage=11 my-20-page-test.pdf ^
1>stdout.log 2>stderr.log
и (как и ожидалось): нет выходных данных в окне, все выходные данные разделены между stdout.log и stderr.log. Последний тест:
gswin32c -sDEVICE=nullpage -dFirstPage=12 -dLastPage=11 my-20-page-test.pdf ^
1>all.log 2>&1
и результат сейчас:
- ничего в окне,
- все в all.log.
То же поведение, что и при перенаправлении stderr / stdout, как в Linux.