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

use*_*441 2 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
)
Run Code Online (Sandbox Code Playgroud)

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

是因为xmllint吗?

Mik*_*sen 5

如果您尝试重定向程序的错误输出,则它可能正在写入 stderr。您可以尝试使用以下命令重定向它:

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

基本上2>&1,最后意味着将任何内容从stderr(2)重定向到stdout(1)。由于stdout被重定向到一个文件,您现在应该可以看到stderr文件中的流。希望这对你有用!