📅  最后修改于: 2023-12-03 14:52:07.160000             🧑  作者: Mango
在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是否存在。
参考资料: