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

它可能会输出到 stderr 而不是 stdout。您可以通过执行以下操作重定向 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 回答