Есть ли способ в оболочке cmd Windows 7 перенаправить stderr на stdout, сохраняя при этом поток stderr нетронутым?
Например, у меня есть программа, которая выводит на stderr и stdout следующее сообщение
TO STDOUT
TO STDERR
Я хочу иметь два файла stderr.txt и stdout.txt со следующим содержимым
stderr.txt
В STDERRstdout.txt
К СТАНДАРТУ
В STDERR
Это возможно?
Думаю, это то, что вам нужно:
dir a.txt > output.msg 2> output.err >&1
или
dir 1>a.txt 2>&1 | type a.txt
2>
перенаправляет stderr &1
отправляет stderr вернуться к stderr.
Мне пришлось бы проверить это, чтобы дать вам лучший ответ
Это глупо, но работает. clip.exe поставляется с современными версиями Windows, и вы можете загрузить его аналог - paste.exe - из нескольких источников.
В этой строке предполагается, что файл yyz.pdq не существует, и поэтому будет выдано сообщение «Файл не найден» для stderr:
(dir yyz.pdq 3>&1 1>&2 2>&3) | clip & paste >con & paste >err.txt
Эта форма команды будет перенаправлять на отдельные файлы для stderr и stdout + stderr, как было изначально запрошено:
((dir yyz.pdq 3>&1 1>&2 2>&3) | clip & paste & paste >err.txt) 1>out.txt 2>&1