如何parsing来自C#的命令行输出?

我想从C#执行一个应用程序(命令行应用程序).​​..我想在执行这个应用程序并提供input,我想分析输出,将导致它。 因为,它会输出很多东西,我想拿走,只是我需要它的东西…

我怎样才能做到这一点 ??

我怎样才能得到在C#的输出,然后只拿走我需要的东西呢?

在C#中执行命令行…我想用“Jeff MC”的方式,他在这个线程中解释它如何:在C#中执行命令行,获得STD OUT结果

非常感谢

还有一种方法可以将所有输出作为事件获取,并在另一个控制台应用程序输出时输出cmd_Error在输出时被引发,并且每当在其他应用程序中引发错误时引发cmd_Error

如果你想分析输出,可能处理这些事件是更好的方式来读取输出和处理其他应用程序中的错误。

 using System; using System.Diagnostics; namespace InteractWithConsoleApp { class Program { static void Main(string[] args) { ProcessStartInfo cmdStartInfo = new ProcessStartInfo(); cmdStartInfo.FileName = @"C:\Windows\System32\cmd.exe"; cmdStartInfo.RedirectStandardOutput = true; cmdStartInfo.RedirectStandardError = true; cmdStartInfo.RedirectStandardInput = true; cmdStartInfo.UseShellExecute = false; cmdStartInfo.CreateNoWindow = true; Process cmdProcess = new Process(); cmdProcess.StartInfo = cmdStartInfo; cmdProcess.ErrorDataReceived += cmd_Error; cmdProcess.OutputDataReceived += cmd_DataReceived; cmdProcess.EnableRaisingEvents = true; cmdProcess.Start(); cmdProcess.BeginOutputReadLine(); cmdProcess.BeginErrorReadLine(); cmdProcess.StandardInput.WriteLine("ping www.bing.com"); //Execute ping bing.com cmdProcess.StandardInput.WriteLine("exit"); //Execute exit. cmdProcess.WaitForExit(); } static void cmd_DataReceived(object sender, DataReceivedEventArgs e) { Console.WriteLine("Output from other process"); Console.WriteLine(e.Data); } static void cmd_Error(object sender, DataReceivedEventArgs e) { Console.WriteLine("Error from other process"); Console.WriteLine(e.Data); } } }