6

プロジェクトで LAME コマンドライン mp3 エンコーダーを使用しています。誰かが使用しているバージョンを確認できるようにしたい。パラメータなしでLAME.exeを実行すると、次のようになります。

C:\LAME>LAME.exe
LAME 32-bits version 3.98.2 (http://www.mp3dev.org/)

usage: blah blah
blah blah

C:\LAME>

> を使用して出力をテキスト ファイルにリダイレクトしようとすると、テキスト ファイルは空になります。c# で System.Process を使用して実行する場合、このテキストはどこからアクセスできますか?

4

4 に答える 4

3

stdout ではなく stderr に出力される場合があります。次のようにしてstderr をリダイレクトできます。

LAME.exe 2> textfile.txt

これで情報が表示される場合、LAME は標準エラー ストリームに出力しています。C# でラッパーを作成すると、標準エラーと出力ストリームをProcessStartInfoからリダイレクトできます。

于 2010-02-05T17:12:57.153 に答える
1
        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.EnableRaisingEvents = false;
        proc.StartInfo.FileName = @"C:\LAME\LAME.exe";
        proc.StartInfo.RedirectStandardError = true;
        proc.StartInfo.UseShellExecute = false;

        proc.Start();
        string output = proc.StandardError.ReadToEnd();


        proc.WaitForExit();

        MessageBox.Show(output);

働きました。皆さんありがとう!

于 2010-02-05T17:16:32.980 に答える
0

stderr に送信される可能性があります。試してみましたか?

Process.StandardErrorを確認してください。

使ってみてください

C:\LAME>LAME.exe 2> test.txt
于 2010-02-05T17:07:16.920 に答える
0

おそらくstderrを使用しています。cmd.exe では stderr をリダイレクトすることはできません。私がリダイレクトした唯一の方法は、djgpp ツールを使用することです。

于 2010-02-05T17:07:25.960 に答える