2012-01-12 27 views
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

エラー出力をプログラムからリダイレクトしようとすると、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は、(1)stdoutに(2である)stderrから何かをリダイレクトすることを意味します。 stdoutはファイルにリダイレクトされているので、ファイルにstderrストリームが表示されます。これはあなたのために働くことを望みます!

0

私は一度も使ったことがありませんが、ドキュメントがhereの場合は、 "-noout"オプションを削除するか、 "-output c:\ output.txt"を追加してみましたか?

+1

-nooutは、検証されるファイルの内容を出力しない場合、-outputを追加すると、その中にすべての出力を含む1つのファイルが作成されません。 – user453441

関連する問題