Q8Y*_*Q8Y 20 c# command-line command-line-arguments
我想从C#执行一个应用程序(命令行应用程序)...我想在执行这个应用程序并向它提供输入后,我想解析将导致它的输出.因为,它会输出许多东西,我想从中获取,只需要我需要的东西......
我怎样才能做到这一点 ??
如何在c#中获取输出,然后从中获取我需要的东西?
为了在C#中执行命令行...我想用"Jeff MC"方式,他在这个帖子中解释了 如何:在C#中执行命令行,得到STD OUT结果
非常感谢
San*_*ath 45
还有一种方法可以将所有输出作为事件获取,当其他控制台应用程序输出它们cmd_DataReceived
时,只要有输出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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
29797 次 |
最近记录: |