2

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

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

它当前在屏幕上显示输出。我想显示放置在输出文件中的所有这些命令的输出。我怎样才能做到这一点?通过使用附加运算符 (>>),除了创建一个空白文件外,什么也做不了。

是因为 xmllint 吗?

4

2 回答 2

5

如果您尝试从程序重定向错误输出,它可能正在写入 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在文件中看到流。希望这对你有用!

于 2012-01-12T22:05:37.727 回答
0

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

于 2012-01-12T21:57:28.170 回答