C#获取命令行输出内容

获取命令行输出内容的方式有传统和异步两种方式。

传统方式:

 public static void RunExe(string exePath, string arguments, out string output, out string error)
        {
            using (Process process = new System.Diagnostics.Process())
            {
                process.StartInfo.FileName = exePath;
                process.StartInfo.Arguments = arguments;
                // 必须禁用操作系统外壳程序  
                process.StartInfo.UseShellExecute = false;
                process.StartInfo.CreateNoWindow = true;
                process.StartInfo.RedirectStandardOutput = true;
                process.StartInfo.RedirectStandardError = true;

                process.Start();

                output = process.StandardOutput.ReadToEnd();
                error = process.StandardError.ReadToEnd();

                process.WaitForExit();
                process.Close();
            }
        }

    class Program
    {
        static void Main(string[] args)
        {           
            string output;
            string error;
            CMD.RunExe("ping", "www.baidu.com",out output,out error);
            Console.WriteLine(output +"\n"+ error);
        }
    }



异步方式:

 /// <summary>
        /// 执行一条command命令
        /// </summary>
        /// <param name="command">需要执行的Command</param>
        /// <param name="output">输出</param>
        /// <param name="error">错误</param>
        public static void ExecuteCommand(string command, out string output, out string error)
        {
            try
            {
                //创建一个进程
                Process process = new Process();
                process.StartInfo.FileName = command;

                // 必须禁用操作系统外壳程序
                process.StartInfo.UseShellExecute = false;
                process.StartInfo.CreateNoWindow = true;
                process.StartInfo.RedirectStandardOutput = true;
                process.StartInfo.RedirectStandardError = true;
                

                //启动进程
                process.Start();

                //准备读出输出流和错误流
                string outputData = string.Empty;
                string errorData = string.Empty;
                process.BeginOutputReadLine();
                process.BeginErrorReadLine();

                process.OutputDataReceived += (sender, e) =>
                {
                    outputData += (e.Data + "\n");
                };

                process.ErrorDataReceived += (sender, e) =>
                {
                    errorData += (e.Data + "\n");
                };

                //等待退出
                process.WaitForExit();

                //关闭进程
                process.Close();

                //返回流结果
                output = outputData;
                error = errorData;
            }
            catch (Exception)
            {
                output = null;
                error = null;
            }
        }





  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
c#获取命令行参数可以通过使用args参数。在C#控制台程序中的Main方法中,args参数是一个字符串数组,它包含传递给程序的命令行参数。你可以通过遍历args数组来访问每个命令行参数。 以下是一个示例代码,展示了如何使用args参数获取命令行参数: ``` using System; namespace ConsoleApp1 { class Program { static void Main(string[] args) { int index = 1; foreach (var item in args) { Console.WriteLine($"{index}---{item}"); index++; } Console.WriteLine("Hello World!"); Console.ReadLine(); } } } ``` 在上面的代码中,我们使用foreach循环遍历args数组,并使用index变量来标记每个命令行参数的索引。然后,我们将每个参数打印到控制台。 请注意,你需要在命令行中传递参数给程序才能看到它们的输出。例如,你可以在命令行中运行以下命令: ``` ConsoleApp1.exe parameter1 parameter2 parameter3 ``` 这将输出: ``` 1---parameter1 2---parameter2 3---parameter3 Hello World! ``` 这样你就可以在C#获取命令行参数了。引用、提供了关于这个话题的更多信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [.NET/C# 获取一个正在运行的进程的命令行参数](https://blog.csdn.net/WPwalter/article/details/88097671)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [C#控制台程序调试时 使用args 获取命令行参数](https://blog.csdn.net/Jiang_Nan_Xue/article/details/115082357)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值