Назад | Перейти на главную страницу

Перенаправление Windows cmd stderr на stdout при сохранении вывода на stderr?

Есть ли способ в оболочке cmd Windows 7 перенаправить stderr на stdout, сохраняя при этом поток stderr нетронутым?

Например, у меня есть программа, которая выводит на stderr и stdout следующее сообщение

TO STDOUT  
TO STDERR

Я хочу иметь два файла stderr.txt и stdout.txt со следующим содержимым

stderr.txt
В STDERR

stdout.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