Как я могу перенаправить вывод команды (запущенной в пакетном цикле) в файл? - PullRequest
2 голосов
/ 13 января 2012

У меня есть пакетный файл Windows, который перебирает файлы в папке и запускает команду для каждого файла.В частности, я запускаю xmllint для проверки некоторых файлов:

for %%i in (c:\temp\*.xml) do (
   C:\XMLLINT\xmllint -noout -schema "C:\schemas\schema.xsd" "%%~dpnxi" >> c:\output.txt
)

В настоящее время он показывает вывод на экране.Я хочу показать вывод всех этих команд, помещенных в выходной файл.Как мне этого добиться?С помощью оператора добавления (>>) ничего не достигается, кроме создания пустого файла.

Это из-за xmllint?

Ответы [ 2 ]

4 голосов
/ 13 января 2012

Если вы пытаетесь перенаправить вывод ошибок из программы, возможно, она пишет в stderr. Вы можете попытаться перенаправить его с помощью:

for %%i in (c:\temp\*.xml) do (
   C:\XMLLINT\xmllint -noout -schema "C:\schemas\schema.xsd" "%%~dpnxi" >> c:\output.txt 2>&1
)

В основном 2>&1 в конце означает перенаправление чего-либо с stderr (который равен 2) на stdout (который равен 1). Поскольку stdout перенаправлен в файл, вы должны увидеть поток stderr в файле. Надеюсь, что это работает для вас!

0 голосов
/ 13 января 2012

Я никогда не использовал его, но если его документация здесь , вы пытались просто удалить опцию "-noout" или добавить: "-output c: \ output.txt"?

...