0

質問の内容。

最終的に私が欲しいのは、gccを実行し、エラーが発生した場合に出力をキャプチャすることです。問題は、エラーがstdoutではなくstderrに書き込まれることです。Linuxでは私はできる

gcc foo.c 2>&1

Windowsでこれをどのように達成できますか?

4

3 に答える 3

5

がある。コンソールウィンドウを右クリックして、を選択しますMark。マウスで目的の領域を選択して右クリックします。これで、Ctrl-Vを使用してテキストファイルに貼り付けることができます。

プログラムをテキストファイルに出力する必要がある場合は、次のように実行します。

myprogram.exe > myfile.txt

リダイレクトについては、こちらを参照してください
。1.コマンドリダイレクト演算子の使用
2.コマンドプロンプトからのエラーメッセージのリダイレクト:STDERR / STDOUT

あなたはこのようにあなたがやりたいことをすることができます:D:\>dir 1> test.txt 2> testerr.txt

于 2010-08-11T16:05:47.173 に答える
4

リチャード、あなたの「受け入れられた答え」は長すぎて間違っています。

あなたの質問に対する簡単な答え(あなたの最後の文で現在述べられているように:「どうすればこれをWindowsで達成できますか?」)は次のとおりです。

Linuxで行うのとまったく同じです。



しかし、私はあなたに長い答えを与えます。

リダイレクト2>&1cmd.exeウィンドウ内でも同じように機能します。cmd.exeのエクスペリエンスが少し錆びているので、今すぐ再テストしました。私はこのGhostscriptコマンドを使用しました(意図的にstdoutとstderrで出力を生成することを目的としています):

gswin32c -sDEVICE=nullpage -dFirstPage=12 -dLastPage=11 my-20-page-test.pdf

期待されるすべての出力をシェルウィンドウに取得しました。それから私はしました:

gswin32c -sDEVICE=nullpage -dFirstPage=12 -dLastPage=11 my-20-page-test.pdf ^
          1>stdout.log

stderrはまだウィンドウに出力されますが、stdout.logには「欠落している」元の出力がありました。次に私がした:

gswin32c -sDEVICE=nullpage -dFirstPage=12 -dLastPage=11 my-20-page-test.pdf ^
          2>stderr.log

stdoutがウィンドウに出力されるようになりましたが、stderr.logにはGhostscriptの残りのメッセージが含まれていました。次:

gswin32c -sDEVICE=nullpage -dFirstPage=12 -dLastPage=11 my-20-page-test.pdf ^
          1>stdout.log 2>stderr.log

および(予想どおり):ウィンドウに出力がなく、すべての出力がstdout.logとstderr.logに分割されます。最後のテスト:

gswin32c -sDEVICE=nullpage -dFirstPage=12 -dLastPage=11 my-20-page-test.pdf ^
          1>all.log 2>&1

そして今の結果:

  1. ウィンドウには何もありません、
  2. all.logのすべて。

これは、Linuxの場合のstderr/stdoutリダイレクトと同じ動作です。

于 2010-08-11T18:27:34.127 に答える
0

特定のコマンドの出力が必要な場合は、コンソール出力をファイルにプッシュする簡単な方法があります。

'dir'コマンドを使用した簡単な例を次に示します(先頭の>はプロンプトを表します)。

>dir > diroutput.txt

于 2010-08-11T16:08:23.453 に答える