如何将命令的输出(在批处理循环中运行)重定向到文件?

时间:2012-01-12 21:42:25

标签: redirect batch-file xmllint

我有一个Windows批处理文件,它迭代文件夹中的文件并在每个文件上运行命令。具体来说,我正在运行xmllint来验证一些文件:

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

它当前显示屏幕上的输出。我想显示放在输出文件中的所有这些命令的输出。我怎样才能做到这一点?通过使用追加运算符(>>),除了正在创建的空白文件外,没有任何操作。

是因为xmllint吗?

2 个答案:

答案 0 :(得分:4)

如果您尝试重定向程序的错误输出,则可能是写入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流。希望这对你有用!

答案 1 :(得分:0)

我从未使用它,但如果其文档为here,您是否尝试删除“-noout”选项,或添加:“ - output c:\ output.txt”?