📜  如何做cmd命令c#(1)

📅  最后修改于: 2023-12-03 14:52:07.160000             🧑  作者: Mango

如何在C#中执行CMD命令

在C#中可以通过 System.Diagnostics 命名空间下的 Process 类来执行CMD命令。

用法

首先,我们需要引用System.Diagnostics 命名空间

using System.Diagnostics;

接着,我们可以通过 ProcessStartInfo 类来配置执行CMD命令时的一些参数,例如命令行参数和工作目录等等

Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Normal; // 设置窗口显示方式
startInfo.FileName = "cmd.exe"; // 执行的程序名称
startInfo.Arguments = "/c dir"; // CMD命令行参数
startInfo.WorkingDirectory = @"C:\"; // CMD命令执行目录
startInfo.RedirectStandardInput = true; // 重定向输入流
startInfo.RedirectStandardOutput = true; // 重定向输出流
startInfo.UseShellExecute = false; // 禁用操作系统外壳程序的使用
process.StartInfo = startInfo;

不过在执行CMD命令前,我们最好检测一下当前系统是否拥有CMD,如果没有则无法执行,代码如下

void CheckCmdExists() {
    ProcessStartInfo psi = new ProcessStartInfo("cmd.exe");
    psi.RedirectStandardInput = true;
    psi.RedirectStandardError = true;
    psi.RedirectStandardOutput = true;
    psi.UseShellExecute = false;

    System.Diagnostics.Process process = System.Diagnostics.Process.Start(psi);
    process.StandardInput.WriteLine("exit");
    string output = process.StandardOutput.ReadToEnd().Trim();
    string error = process.StandardError.ReadToEnd().Trim();

    if (!string.IsNullOrEmpty(error)) {
        throw new Exception("CMD does not exist in the system.");
    }
}

然后我们可以使用 process.Start() 方法来执行CMD命令

process.Start();
process.WaitForExit(); // 等待进程退出
string output = process.StandardOutput.ReadToEnd();
Console.WriteLine(output); // 输出CMD命令结果

等待进程退出之后即可获取 CMD 命令执行的结果,通过输出流来读取。

总结

以上就是在C#中执行CMD命令的方法了,需要注意命令语法正确和CMD是否存在。

参考资料:

  1. How to Execute a Command in C# ? (by hack.in)
  2. MSDN - ProcessStartInfo Class
  3. Execute Shell Command in C#