4

つまり、両方のストリームをコンソールに表示しますが、何らかの形で互いに区別します。

通常、どの行が stderr であり、通常の出力と混合されているのかわからないということです。それをファイルにリダイレクトすると、通常の出力に関していつエラーが発生したのかわかりません。したがって、stderr から来るすべての行に、たとえば次のような最初の文字列のようなインジケータがあるようにする方法はありますか?

c:\>command.exe

normal output
normal output
normal output
stderr: error message
normal output
stderr: error message
normal output

これは、大量の情報を吐き出し、これら 2 つのストリームを混合するコンパイラ/make で特に問題になります。UNIX を使用して特定の文字列をテキストのすべての行の前に追加できることsedは知っていますが、メイン プログラムとの関係でそれを使用する方法がわかりません。2 つのストリームを結合すると、文字列がすべての行の先頭に追加されます。stderr をファイルにリダイレクトすると、コンソールに表示されず、stdout からコンテキストから外れます。

4

1 に答える 1

2

同じ画面でエラー メッセージと通常の出力を区別することが目的である場合は、次のトリックを使用して行うことができます。

anycompiler params ... 2>&1 1>&3 | findstr /N /A:4E "^"

このようにして、エラー メッセージの前に赤の背景に黄色の行番号が表示されます。

抽出された以前の回答: Batch - How can I redirect stderr and stdout from within the batch script?

前の行の両方の出力をディスク ファイルにリダイレクトすると、STDERR 出力の前に行番号が付きます。

于 2013-05-27T19:21:21.460 に答える