Как передать стандартную ошибку в файл в DOS (командный файл)? - PullRequest
0 голосов
/ 21 февраля 2012

Как передать стандартную ошибку в файл в пакетном файле DOS? Трубопровод с использованием >> передает только стандартный вывод, и стандартная ошибка все еще поступает на консоль.

Подробности моей проблемы:

Я запускаю WinRAR через командную строку в автоматическом ежедневном резервном копировании. И следующий пример транслирует вывод WinRar, но не вывод ошибок, чего я больше всего хочу, в winraroutput.txt:

RAR.exe a -esh -r "E:\backup.rar" "D:\*.*" >> winraroutput.txt

Проблема в том, что иногда файлы используются, и когда они нужны, я хочу знать, что они были пропущены в архиве, и записать это в файл .txt рядом с каждым файлом .rar на случай, если нам когда-нибудь придется вернуться. Недостающие файлы легко заменяются переустановкой программ, поэтому заменить их нет ничего сложного, если мы знаем, что они отсутствуют. Так что это просто информация, которую было бы здорово знать, не обязательно, во время нужды.

Как вывести только стандартный вывод ошибок в файл .txt и, если возможно, но не обязательно, оставить обычный вывод на консоль?

Бонусные баллы:

Бонусные баллы, если вы можете сказать мне, как удалить файл, если он пуст (без ошибок)! На вопрос здесь: Как обнаружить (и удалить) файл, если он пуст, с помощью пакетного файла Windows? .

1 Ответ

3 голосов
/ 21 февраля 2012

Попробуйте:

   command.exe 2>file.txt

Или, если вы предпочитаете не видеть ошибок, отправьте его на nul:

   command.exe 2>nul

Это должно оставить std :: cout на консоли.

...