在运行时获取cmd的输出

时间:2013-04-11 21:37:40

标签: c# cmd

我使用以下代码捕获cmd文件的输出:

com = "Parameter";
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.FileName = Properties.Settings.Default.pathTo + @"copy.cmd";
startInfo.Arguments = com;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
Console.WriteLine(process.StandardOutput.ReadToEnd());
Console.WriteLine(process.StandardError.ReadToEnd());

没关系,但是在cmd完成后我得到了输出。如何在运行cmd时获取输出?

1 个答案:

答案 0 :(得分:1)

由于此次调用,您最终得到了输出:

process.WaitForExit();

阻止代码执行,直到命令完成。

要读取输出,请不要将WaitForExit()调用放在那里,并在数据到达时从StandardOutput读取,如:

while ((var str = process.StandardOutput.ReadLine()) != null)
{
    // do something with str
}