1

コマンドのコンソール出力をリダイレクトしたい。
問題は、コマンドが途中で (多かれ少なかれ) ハングし、コンソールに出力されてもログファイルが空であることです。次のように wtee.exe も試しました。%pat%wtee.exe log.txt ですが、機能しません。コンソールをリアルタイムでダンプするものが必要です。私は、c ++やpowershell csriptなどを含むほとんどすべてのソリューションを受け入れています.

記録のために、詳細な出力を投稿する必要があります(https://superuser.com/questions/564468/how-can-i-store-encfs6-xml-in-another-location-and-still-make-it-検出可能

前もって感謝します

アップデート:

うわーそれは動作します。
どうやら、バッチ スクリプトを実行する前にログ ファイルを削除する必要があるようです。

mycommand.exe  2>&1  | wtee.exe %abspath%log.txt

私が使用する場合

mycommand.exe  2>&1  | wtee.exe -a %abspath%log.txt 

その後、毎回ファイルを削除する必要はありません。
ベアテイルのアイデアは興味深いですが、今は必要ありません。ストリームはコンソールとログ ファイルの両方に送信されます。

本当にありがとう

UPDATE2: tee と wtee はほとんど同じなので、gnuwin32 タグも使用しました。これは tee.exe に適用されると思います。

4

1 に答える 1

0

それはどのように正確に「機能しない」のですか?STDOUT と STDERR をファイル ( ) にリダイレクトするとどうなりますcommand >log.txt 2>&1か? コンソールにまだ出力がありますか? その場合、コマンドは STDOUT に書き込まれないため、パイプが の STDOUT を のSTDIN に接続するため、 tee(wteeさらに言えば) は入力を取得しません。その場合、コマンドが書き込むハンドルが見つかるまで、ハンドル 3 から 9 をリダイレクトしてみてください。例:commandtee

command 3>log.txt

ログファイルをページャーに表示することで、欠落しているコンソール出力を補うことができます (例: bartail )。

ハンドルを見つけたら、それを STDOUT にリダイレクトしてから、次のようにパイプしますtee

command 5>&1 | tee log.txt
于 2013-03-12T11:52:07.193 に答える