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);//传入要执行的命令
        }

使用cmd命令主要用到Process类
Process类隶属于Diagnostics命名空间,在使用前先要声明

using System.Diagnostics;

主要过程建立一个新进程运行打开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;//设置在新窗口中启动进程

首先设置FileName属性用来指示进程的进程名(大部分进程需要添加路径)
之后设置UseShellExecute属性为false
关于何时该让UseShellExecute为true或者fasle,stackoverflow有个详细的解答,在这里先间接的说明当其设为true时,该进程将调用ShellExecute函数,否则将调用CreateProcess函数。
之后开启进程重定向标准输入输出以及错误显示用于接收和调用程序的输入输出信息
最后因为只使用到命令行的命令执行结果所以不必要打开cmd窗口所以将CreateNoWindow属性设置为ture来隐藏窗口
再设置完启动信息之后便可以开启cmd命令行并写入一行命令就可以正常操作

myProcess.Start();//启动进程
myProcess.StandardInput.WriteLine(cmd);//传入要执行的命令

参考链接:
stackoverflow:https://stackoverflow.com/questions/5255086/when-do-we-need-to-set-useshellexecute-to-true

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# ,可以使用 `Process.Start` 方法来启动一个外部进程,包括启动系统的 cmd.exe 命令工具。以下是一个简单的示例代码: ```csharp using System.Diagnostics; class Program { static void Main(string[] args) { // 要运的命令 string command = "path/to/your/file.exe"; // 使用 Process.Start 方法启动 cmd.exe 进程,并传入命令 Process.Start("cmd.exe", "/c " + command); } } ``` 需要注意的是,在启动 cmd.exe 进程时,需要使用 "/c" 参数来传递要执的命令。另外,如果要传递多个参数,可以将它们拼接成一个字符串,使用空格分隔。 如果需要获取命令执的结果,可以通过 Process 对象的 StandardOutput 属性来获取输出流,示例如下: ```csharp using System.Diagnostics; class Program { static void Main(string[] args) { // 要运的命令 string command = "dir"; // 使用 Process.Start 方法启动 cmd.exe 进程,并传入命令 Process process = new Process(); process.StartInfo.FileName = "cmd.exe"; process.StartInfo.Arguments = "/c " + command; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; process.Start(); // 读取输出流 string output = process.StandardOutput.ReadToEnd(); // 等待进程结束 process.WaitForExit(); Console.WriteLine(output); } } ``` 在这个示例使用 `RedirectStandardOutput` 属性来指定输出流要重定向到 Process 对象的 StandardOutput 属性。然后通过 `ReadToEnd` 方法来读取输出流的内容,并在进程结束后输出到控制台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值