2010-02-05 5 views
6

프로젝트에서 LAME 명령 줄 mp3 인코더를 사용하고 있습니다. 누군가가 사용하고있는 버전을 볼 수 있기를 원합니다. 난 그냥 예를 들어 내가 얻을 수없는 PARAMATERS와 LAME.exe을 실행할 경우 :stdout으로 보내지 않은 명령 줄 텍스트는 어떻게 캡처합니까?

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

사용하여 사용해보십시오. cmd.exe를 사용하면 stderr를 리디렉션 할 수 없으며 리디렉션 한 유일한 방법은 djgpp 도구를 사용하는 것입니다.

+0

나는 System.Process를 사용하여 C에서이를 볼 수 있습니까? 나는 이것을 지금 감사 할 것이다. – Dave

+0

아마 내가 틀렸어.이 http://support.microsoft.com/kb/110930에 지금 stderr를 리디렉션 할 수 있다고 나와 있습니다. –

+0

그것은 항상 cmd를 사용하여 가능합니다. –

0

stderr로 전송되었을 수도 있습니다. 시도해 보셨습니까?

체크 아웃 Process.StandardError을 확인하십시오.

것은 아마도 열려진 사용하고

C:\LAME>LAME.exe 2> test.txt 
3

stdout 대신 stderr로 출력 될 수 있습니다. 당신 수행하여 수 redirect stderr :

LAME.exe 2> textfile.txt 

이 당신에게 정보를 표시하는 경우는, 다음 LAME은 표준 에러 스트림에 출력된다. C#에서 래퍼를 작성하는 경우 standard error 및 출력 스트림을 ProcessStartInfo에서 리디렉션 할 수 있습니다.

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); 

근무했습니다. 모두에게 감사드립니다!