C#执行CMD命令并接收返回结果的实现方法

时间:2022-09-02 20:33:12

1.引入

using System.Diagnostics;  

2.创建执行CMD

Process CmdProcess = new Process();  
CmdProcess.StartInfo.FileName = "cmd.exe";

3.配置开发方式输入输出错误

CmdProcess.StartInfo.CreateNoWindow = true;         // 不创建新窗口 
CmdProcess.StartInfo.UseShellExecute = false; //不启用shell启动进程
CmdProcess.StartInfo.RedirectStandardInput = true; // 重定向输入
CmdProcess.StartInfo.RedirectStandardOutput = true; // 重定向标准输出
CmdProcess.StartInfo.RedirectStandardError = true; // 重定向错误输出

4.执行cmd且获取返回值

方法一

CmdProcess.StartInfo.Arguments = "/c " + "=====cmd命令======";//“/C”表示执行完命令后马上退出 
CmdProcess.Start();//执行

CmdProcess.StandardOutput.ReadToEnd();//获取返回值

CmdProcess.WaitForExit();//等待程序执行完退出进程

CmdProcess.Close();//结束

方法二

CmdProcess.StandardInput.WriteLine(str + "&exit"); //向cmd窗口发送输入信息 
CmdProcess.StandardInput.AutoFlush = true; //提交

CmdProcess.Start();//执行

CmdProcess.StandardOutput.ReadToEnd();//输出

CmdProcess.WaitForExit();//等待程序执行完退出进程

CmdProcess.Close();//结束

5.输出返回值

首先 引入

using System.IO;
            StreamReader sr =CmdProcess.StandardOutput;//获取返回值 
string line = "";
int num = 1;
while ((line=sr.ReadLine())!=null)
{
if(line!="")
{
Console.WriteLine(line + " " + num++);
}
}

6.Process 的 HasExited属性

    //等待程序执行完退出进程
CmdProcess.WaitForExit();

//判断程序是退出了进程 退出为true(上面的退出方法执行完后,HasExited的返回值为 true)
falg = CmdProcess.HasExited;