下面我会详细讲解如何在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技术站