我在项目中使用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运行时,此文本可从何处访问答案 0 :(得分:3)
可以输出到stderr而不是stdout。你可以redirect stderr做:
LAME.exe 2> textfile.txt
如果显示信息,则LAME输出到标准错误流。如果您使用C#编写包装器,则可以重定向standard error并从ProcessStartInfo输出流。
答案 1 :(得分: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);
的工作。谢谢大家!
答案 2 :(得分:0)
答案 3 :(得分:0)
它可能正在使用stderr。 cmd.exe不允许您重定向stderr,而且我重定向它的唯一方法是使用djgpp工具。