我使用以下代码捕获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时获取输出?
答案 0 :(得分:1)
由于此次调用,您最终得到了输出:
process.WaitForExit();
阻止代码执行,直到命令完成。
要读取输出,请不要将WaitForExit()
调用放在那里,并在数据到达时从StandardOutput
读取,如:
while ((var str = process.StandardOutput.ReadLine()) != null)
{
// do something with str
}