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#如何利用反射将枚举绑定到下拉框详解

    下面我将详细讲解如何利用反射将C#中的枚举绑定到下拉框中。 什么是反射? C#中的反射是指通过程序运行时访问、检测和修改程序中的成员的一种机制,它能够让我们在运行时获取类的类型信息、访问属性和方法,并动态创建对象等。 怎样利用反射将枚举绑定到下拉框中? 我们可以通过反射获取到枚举类型的所有值,并将它们绑定到下拉框中。 以下是基本的实现代码: // 获取枚举类…

    C# 2023年6月6日
    00
  • c#自定义泛型类的实现

    实现自定义泛型类的步骤如下: 定义泛型类 定义一个泛型类,可以使用 class 关键字,紧随其后的是类名和泛型参数列表。然后在类中可以使用泛型参数,类似于普通的类型。例如: public class MyGenericClass<T> { private T data; public MyGenericClass(T data) { this.d…

    C# 2023年6月7日
    00
  • .NET Core实现企业微信获取部门成员

    .NET Core实现企业微信获取部门成员攻略 企业微信是一款专为企业打造的即时通讯工具,可以方便地进行企业内部沟通和协作。在企业微信中,可以通过API获取部门成员信息。本攻略将介绍如何使用.NET Core实现企业微信获取部门成员的功能。 步骤 步骤1:创建企业微信应用 首先,需要在企业微信中创建一个应用。可以按照以下步骤创建一个新的企业微信应用: 登录企…

    C# 2023年5月17日
    00
  • C# Volatile的具体使用

    关于C#中Volatile的具体使用,我先介绍一下Volatile的作用和用途。Volatile是C#中用来保证多线程并发访问共享变量时线程安全的一种机制。当一个变量被声明为Volatile类型后,就可以保证多个线程并发访问这个变量时,数据不会出现意外的错误(比如数据不一致、数据丢失等)。 Volatile变量的特点是每次访问都是直接从内存中读取或写入变量的…

    C# 2023年5月15日
    00
  • C#实现进制转换

    C#实现进制转换的完整攻略 在C#中,要实现进制转换可以使用Convert类提供的方法,主要有以下三个: ToInt32:将指定的字符串转换为32位带符号整数。 ToString:将指定的数字转换为字符串。 Parse:将字符串表示形式转换为等效的数字表示形式。 十进制转二进制 定义一个十进制数 int number = 123; 将其转换为二进制数 str…

    C# 2023年6月6日
    00
  • C# 忽略大小写进行字符串比较

    C# 忽略大小写进行字符串比较 在C#中字符串比较时,默认是区分大小写的。如果要忽略大小写,可以使用以下两种方法: 1. 使用String.Compare(strA, strB, StringComparison)方法 该方法提供了一个StringComparison枚举类型参数,可以指定字符串比较的规则。其中,StringComparison.Ordina…

    C# 2023年6月7日
    00
  • .NET Core通过dotnet publish命令发布应用

    .NET Core通过dotnet publish命令发布应用的攻略 在.NET Core中,我们可以使用dotnet publish命令将应用程序发布为可执行文件或NuGet包。本攻略将详细介绍如何使用dotnet publish命令发布应用程序。 发布应用程序 我们可以通过以下步骤使用dotnet publish命令发布应用程序。 打开命令行窗口。 进入…

    C# 2023年5月16日
    00
  • 详解C#如何实现树形图列表

    下面是详解“详解C#如何实现树形图列表”的完整攻略。 1. 准备工作 在实现树形图列表之前,需要确保已经有一个能够与数据库交互的C#工程并能够成功地从数据库中获取数据。此外,我们还需要一个能够在前端界面展示数据结构的控件,常用的控件包括TreeView和DataGrid。 2. 数据库中存储数据结构 在数据库中,我们可以使用关系型、非关系型或基于图的数据库来…

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