C# 执行CMD命令并接收返回结果的操作方式

下面我会详细讲解如何在C#中执行CMD命令并接收返回结果的操作方式,步骤如下:

第一步:引入命名空间和创建Process对象

using System.Diagnostics;

通过引入System.Diagnostics命名空间,我们可以使用Process类来执行CMD命令并接收返回结果。我们需要先创建一个Process对象来执行CMD命令,以便可以设置Process对象所需的一些参数。

Process process = new Process();

第二步:设置Process对象的参数

有一些必要的参数,需要设置在调用CMD命令时传递给Process对象。如下:

  • FileName:该属性设置要执行的CMD命令的文件名,这里我们需要设置CMD.exe。
  • Arguments:该属性设置传递给CMD.exe的参数,我们要执行的CMD命令,比如 dir、ipconfig 等。
  • UseShellExecute:设置是否使用操作系统 shell 启动进程。设置为false时,将不会在新的窗口中运行程序。默认值为true。
  • RedirectStandardOutput:该属性设置是否将输出流重定向到 Process 对象的 StandardOutput 流中。这是接收 CMD 命令返回结果的关键。
  • CreateNoWindow:设置是否在新窗口中启动进程并且将其显示到屏幕上。

举个例子,我们要执行 dir 命令,并获取返回结果,这里要这样设置:

Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.Arguments = "/c dir";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.CreateNoWindow = true;

第三步:启动Process对象并获取返回结果

可以通过调用Process对象的Start()方法来启动CMD命令并等待执行完成。如果设置了RedirectStandardOutput为true,则可以使用Process对象的StandardOutput属性来获取CMD命令返回的结果。

process.Start();
string results = process.StandardOutput.ReadToEnd();

需要注意的是,在CMD命令执行完毕之后,使用ReadToEnd()方法获取返回结果时,要等待进程完成执行。

完整的代码示例:

using System.Diagnostics;

namespace cmdDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Process process = new Process();
            process.StartInfo.FileName = "cmd.exe";
            process.StartInfo.Arguments = "/c dir";
            process.StartInfo.UseShellExecute = false;
            process.StartInfo.RedirectStandardOutput = true;
            process.StartInfo.CreateNoWindow = true;
            process.Start();

            string results = process.StandardOutput.ReadToEnd();          
            process.WaitForExit();

            Console.WriteLine(results);
            Console.ReadKey();
        }
    }
}

运行结果:

Directory of C:\Users\Administrator\source\repos\cmdDemo\cmdDemo\bin\Debug\netcoreapp3.1

2021/05/17  下午 01:31    <DIR>          .
2021/05/17  下午 01:31    <DIR>          ..
2021/05/16  下午 11:01             3,072 cmdDemo.dll
2021/05/17  下午 01:31            77,824 cmdDemo.pdb
2021/05/16  下午 11:01             4,096 cmdDemo.runtimeconfig.dev.json
2021/05/16  下午 11:01             1,012 cmdDemo.runtimeconfig.json
               4 File(s)         85,004 bytes
               2 Dir(s)  129,921,566,208 bytes free

再举一个例子,我们要执行 ipconfig 命令,获取本地IP信息:

Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.Arguments = "/c ipconfig";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.CreateNoWindow = true;
process.Start();

string results = process.StandardOutput.ReadToEnd();
process.WaitForExit();

Console.WriteLine(results);
Console.ReadKey();

运行结果:

Windows IP Configuration


Ethernet adapter Ethernet0:

   Connection-specific DNS Suffix  . :
   IPv4 Address. . . . . . . . . . . : 192.168.0.200
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.0.1

Wireless LAN adapter WiFi0:

   Connection-specific DNS Suffix  . :
   IPv4 Address. . . . . . . . . . . : 192.168.31.119
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.31.1

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 执行CMD命令并接收返回结果的操作方式 - Python技术站

(1)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • C#中的委托和事件

    委托和事件的概念说明: 委托是一种类型,代表可以指向具有特定参数列表和返回类型的方法的引用,可以使方法的参数自由变化,可以做到比直接调用方法更灵活。 事件是一种特殊的委托,被用于实现发布者/订阅者模式,通过事件的注册和触发可以完成对象间的通信。 委托的声明和使用: 声明委托的语法:delegate returnType DelegateName(parame…

    C# 2023年5月15日
    00
  • .NET Core自定义配置文件

    在本攻略中,我们将详细讲解.NET Core自定义配置文件的实现方法,并提供两个示例说明。 创建配置文件:首先,我们需要创建一个配置文件。我们可以使用JSON、XML或INI等格式来创建配置文件。例如,我们可以创建一个名为appsettings.json的JSON格式的配置文件,内容如下: { "MyConfig": { "Na…

    C# 2023年5月16日
    00
  • c# 颜色选择控件的实现代码

    下面我将为你详细讲解如何实现一个C#颜色选择控件的代码,包括其实现思路和示例说明。 实现思路 要实现一个C#颜色选择控件,可以通过使用ColorDialog控件和Button控件的组合来实现。 ColorDialog控件是C#中用于显示颜色选择对话框的控件,它允许用户从一组预定义颜色中进行选择或使用自定义颜色来指定颜色。Button控件可以用来触发颜色选择对…

    C# 2023年6月7日
    00
  • C# SynchronizationContext以及Send和Post使用解读

    C#中的SynchronizationContext是用于处理多线程并发问题的一种机制,它能够确保在多线程环境下的UI操作不会出现问题,保障了程序的稳定性和可靠性。在使用SynchronizationContext时,我们借助它提供的Send和Post方法来将指定的操作添加到指定的队列中,等待处理。 SynchronizationContext的作用 Syn…

    C# 2023年6月6日
    00
  • C# DataTable 转换为 实体类对象实例

    将C# DataTable转换为实体类对象实例是一个很常见的操作,下面是详细的攻略。 步骤一:创建实体类 首先创建一个实体类,其中的属性需要与DataTable里面的字段名称和数据类型一一对应。 public class Person { public int Id { get; set; } public string Name { get; set; }…

    C# 2023年6月1日
    00
  • C#调用Python脚本的简单示例

    接下来是详细讲解“C#调用Python脚本的简单示例”的完整攻略。 简介 在很多场景下,我们需要将C#程序与Python程序结合起来使用。例如,我们的C#程序需要处理大量的数据,而Python则拥有出色的科学计算库,可以快速地处理这些数据;或者我们想使用Python提供的机器学习库,通过C#程序接收Python模型的预测结果等等。 在这种情况下,我们需要实现…

    C# 2023年6月7日
    00
  • C#使用SqlDataAdapter对象获取数据的方法

    下面详细讲解一下“C#使用SqlDataAdapter对象获取数据的方法”的完整攻略: 1. 准备工作 在使用SqlDataAdapter对象获取数据之前,需要先引用System.Data.SqlClient库。可以通过在程序代码中添加以下语句实现: using System.Data.SqlClient; 同时需要准备好连接数据库所需的参数,例如服务器名称…

    C# 2023年5月31日
    00
  • ASP.NET设计网络硬盘之两重要类代码

    我可以为您提供关于“ASP.NET设计网络硬盘之两重要类代码”的完整攻略。 概述 在ASP.NET网络硬盘设计中,有两个重要的类可以帮助我们实现文件的上传、下载和管理功能。这两个类是FileUpload和Directory。 FileUpload类 FileUpload类是ASP.NET框架中的一个控件,用于上传文件到Web服务器。使用该控件可以轻松方便地实…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部