내 목표는 C#의 외부 .bat 파일을 실행하는 것입니다. 문제는 실행 된 박쥐의 결과를 콘솔이 아닌 내 양식으로 표시해야한다는 것입니다. Google 솔루션은 박쥐를 시작하는 방법을 보여 주지만 콘솔에서 콘텐츠를 가져 오는 방법은 제시하지 않습니다.C# 형식의 .Bat 실행
이것을 실현하는 가장 좋은 방법은 무엇일까요?
내 목표는 C#의 외부 .bat 파일을 실행하는 것입니다. 문제는 실행 된 박쥐의 결과를 콘솔이 아닌 내 양식으로 표시해야한다는 것입니다. Google 솔루션은 박쥐를 시작하는 방법을 보여 주지만 콘솔에서 콘텐츠를 가져 오는 방법은 제시하지 않습니다.C# 형식의 .Bat 실행
이것을 실현하는 가장 좋은 방법은 무엇일까요?
당신은 Process 클래스의 StandartOutputEvent를 사용할 수 있습니다
const string BATFILE = "Test.bat";
const bool HIDE = true;
static Encoding ENCODING = Encoding.Default;
static void Main(string[] args)
{
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo("cmd", BATFILE);
if (HIDE)
{
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
}
psi.RedirectStandardOutput = true;
psi.StandardOutputEncoding = ENCODING;
psi.UseShellExecute = false;
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo = psi;
p.OutputDataReceived += p_OutputDataReceived;
p.Start();
}
static void p_OutputDataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)
{
//Do something with a form...
System.Console.WriteLine(e.Data);
}
난 당신이 너무이 필요 필요가 있다고 생각 :
이...
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
...
p.Start();
p.checkoutProcess.BeginOutputReadLine();
p.checkoutProcess.BeginErrorReadLine();
확인이 http://stackoverflow.com/questions/11177554/ c-sharp-bat-file-execution-with-error-output-redirection –
도움이 안되면, 출력이 끝난 후에가 아니라 전체 시간을 갖고 싶습니다. 방망이가 생성하는 각 행을 업데이트해야합니다. – Horius
proc.StandardOutput.ReadToEnd() 대신 proc.StandardOutput.ReadLine()을 사용하면 각 행을 출력 할 때 읽을 수 있습니다. –