繁体   English   中英

如何解析c#的命令行输出?

[英]How to parse command line output from c#?

我想从C#执行一个应用程序(命令行应用程序).​​..我想在执行这个应用程序并向它提供输入后,我想解析将导致它的输出。 因为,它会输出许多东西,我想从中获取,只需要我需要的东西......

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

如何在c#中获取输出,然后从中获取我需要的东西?

为了在C#中执行命令行...我想用“Jeff MC”方式,他在这个帖子中解释了如何:在C#中执行命令行,得到STD OUT结果

非常感谢

还有让所有的输出作为事件的另一种方式,当他们被其他控制台应用程序输出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);
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM