C++可以通过
system()
执行系统命令,那么C#如何执行系统命令呢?
步骤
C#并没有直接提供执行系统命令的函数,但是我们可以通过静默启动cmd实现。
注:请先引用命名空间using System.Diagnostics;
1.初始化cmd进程对象
//创建进程对象 Process process = new Process(); //设定此进程对象的信息 ProcessStartInfo startInfo = new ProcessStartInfo(); //设定将要打开的应用 startInfo.FileName = System.Environment.GetFolderPath(Environment.SpecialFolder.System) + "\\cmd.exe"; //设定需要执行的命令,“/C”表示执行完命令后马上退出 startInfo.Arguments = "/C " + "执行的命令"; //不使用系统外壳程序启动 startInfo.UseShellExecute = false; //不重定向输入 startInfo.RedirectStandardInput = false; //重定向输出(用于读取输出) startInfo.RedirectStandardOutput = true; //不创建窗口,不显示 startInfo.CreateNoWindow = true; process.StartInfo = startInfo;
2. 打开cmd,读取输入,并退出
try { //启动程序 process.Start(); //无限等待退出 process.WaitForExit(); //获得输出信息 string outstr = process.StandardOutput.ReadToEnd(); } finally { process.Close(); }
实例
读取输入的命令,执行后输出结果
展开源码
using System; using System.Diagnostics; using System.Runtime.InteropServices; namespace CMD { class Program { //创建进程对象 static string[] c = { "1", "1" }; static Process process = new Process(); static void Main(string[] args) { if (args != c) { //设置信息 Console.Beep(4000, 500); Console.Title = "CMD模拟"; Console.WriteLine("[ 控制台模拟 Ver=1.0 Author=C#之家 Website=https://www.chsarphome.xyz ]"); } Console.Write("->"); //设定此进程对象的信息 ProcessStartInfo startInfo = new ProcessStartInfo(); //设定将要打开的应用 startInfo.FileName = System.Environment.GetFolderPath(Environment.SpecialFolder.System) + "\\cmd.exe"; //设定需要执行的命令,“/C”表示执行完命令后马上退出 startInfo.Arguments = "/C " + Console.ReadLine(); if (startInfo.Arguments == "/C exit") { Environment.Exit(0); } if (startInfo.Arguments == "/C cls") { Console.Clear(); Main(c); } if (startInfo.Arguments == "/C ver") { Console.WriteLine("[ 控制台模拟 Ver=1.0 Author=C#之家 Website=https://www.chsarphome.xyz ]"); Main(c); } //不使用系统外壳程序启动 startInfo.UseShellExecute = false; //不重定向输入 startInfo.RedirectStandardInput = false; //重定向输出(用于读取输出) startInfo.RedirectStandardOutput = true; //不创建窗口,不显示 startInfo.CreateNoWindow = true; process.StartInfo = startInfo; try { //启动程序 process.Start(); //无限等待退出 process.WaitForExit(); //获得输出信息 string outstr = process.StandardOutput.ReadToEnd(); Console.WriteLine(outstr); } finally { process.Close(); } Main(c); } } }
提示
你已经点赞过了