我有一个Windows批处理文件,它迭代文件夹中的文件并在每个文件上运行命令。具体来说,我正在运行xmllint来验证一些文件:
for %%i in (c:\temp\*.xml) do (
C:\XMLLINT\xmllint -noout -schema "C:\schemas\schema.xsd" "%%~dpnxi" >> c:\output.txt
)
它当前显示屏幕上的输出。我想显示放在输出文件中的所有这些命令的输出。我怎样才能做到这一点?通过使用追加运算符(>>),除了正在创建的空白文件外,没有任何操作。
是因为xmllint吗?
答案 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”?