stdout으로 전송되지 않은 명령 줄 텍스트를 어떻게 캡처합니까?

StackOverflow https://stackoverflow.com/questions/2208900

  •  18-09-2019
  •  | 
  •  

문제

프로젝트에서 Lame Command Line 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를 사용하여 실행할 때이 텍스트는 어디에서 액세스 할 수 있습니까?

도움이 되었습니까?

해결책

아마도 stderr를 사용하고있을 것입니다. cmd.exe를 사용하면 stderr를 리디렉션 할 수 없으며, 내가 방향을 바꾸는 유일한 방법은 DJGPP 도구를 사용하는 것입니다.

다른 팁

stdout 대신 stderr로 출력 될 수 있습니다. 당신은 할 수 있습니다 STDERR 리디렉션 수행하여 :

LAME.exe 2> textfile.txt

이것이 정보를 보여 주면 Lame이 표준 오류 스트림으로 출력합니다. C#에 래퍼를 작성하면 리디렉션 할 수 있습니다. 표준 에러 출력 스트림 ProcessStartinfo.

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

일했다. 감사합니다!

Stderr로 보내질 수 있습니다. 시도해 보셨습니까?

체크 아웃 Process.StandardError.

사용해보십시오

C:\LAME>LAME.exe 2> test.txt
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top