C井中使用Cmd命令行
在写C#项目时有时候会运用到cmd命令来执行一些操作
下面就贴一个例子说明如何在C#中使用cmd命令行
代码样例
cmd参数用于传输一行字符串
例如"shutdown -s -t 0"
public void CMDOperator(string cmd)
{
Process myProcess = new Process();//创建进程对象
myProcess.StartInfo.FileName = "cmd.exe";//设置打开cmd命令窗口
myProcess.StartInfo.UseShellExecute = false;//不使用操作系统shell启动进程的值
myProcess.StartInfo.RedirectStandardInput = true;//设置可以从标准输入流读取值
myProcess.StartInfo.RedirectStandardOutput = true;//设置可以向标准输出流写入值
myProcess.StartInfo.RedirectStandardError = true;//设置可以显示输入输出流中出现的错误
myProcess.StartInfo.CreateNoWindow = true;//设置在新窗口中启动进程
myProcess.Start();//启动进程
myProcess.StandardInput.WriteLine(cmd);//传入要执行的命令
}
1
2
3
4
5
6
7
8
9
10
11
12
使用cmd命令主要用到Process类
Process类隶属于Diagnostics命名空间,在使用前先要声明
using System.Diagnostics;
1
主要过程建立一个新进程运行打开cmd命令窗口,再写入一行字符串
在启动进程之前先要设置进程的相关信息
myProcess.StartInfo.FileName = "cmd.exe";//设置打开cmd命令窗口
myProcess.StartInfo.UseShellExecute = false;//不使用操作系统shell启动进程的值
myProcess.StartInfo.RedirectStandardInput = true;//设置可以从标准输入流读取值
myProcess.StartInfo.RedirectStandardOutput = true;//设置可以向标准输出流写入值
myProcess.StartInfo.RedirectStandardError = true;//设置可以显示输入输出流中出现的错误
myProcess.StartInfo.CreateNoWindow = true;//设置在新窗口中启动进程
1
2
3
4
5
6
首先设置FileName属性用来指示进程的进程名(大部分进程需要添加路径)
之后设置UseShellExecute属性为false
关于何时该让UseShellExecute为true或者fasle,stackoverflow有个详细的解答,在这里先间接的说明当其设为true时,该进程将调用ShellExecute函数,否则将调用CreateProcess函数。
之后开启进程重定向标准输入输出以及错误显示用于接收和调用程序的输入输出信息
最后因为只使用到命令行的命令执行结果所以不必要打开cmd窗口所以将CreateNoWindow属性设置为ture来隐藏窗口
再设置完启动信息之后便可以开启cmd命令行并写入一行命令就可以正常操作
myProcess.Start();//启动进程
myProcess.StandardInput.WriteLine(cmd);//传入要执行的命令