C#经常操作CMD,使用的话就用下面的2和3进行整理一下使用吧。
1、简单的调用命令不需要回传数据,最简单
public static void ipcmd(object p) { Process process = new Process(); ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = "cmd.exe"; startInfo.Arguments = "/c " + p; startInfo.UseShellExecute = false; startInfo.RedirectStandardInput = false; startInfo.RedirectStandardOutput = true; startInfo.CreateNoWindow = true; process.StartInfo = startInfo; startInfo.Verb = "RunAs"; process.Start(); }
2、有回传数据的
public static string CmdExcute(string cmdStr) { Process process = new Process(); string output = ""; IntPtr ptr = new IntPtr(); bool bOS_X64 = System.Environment.Is64BitOperatingSystem; if (bOS_X64) { Win32.Wow64DisableWow64FsRedirection(ref ptr); // 关闭system32文件重定向 } try { process.StartInfo.FileName = @"cmd.exe"; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardInput = true; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; process.StartInfo.CreateNoWindow = true; if (process.Start())//开始进程 { process.StandardInput.AutoFlush = true; process.StandardInput.WriteLine(cmdStr); process.StandardInput.WriteLine("exit"); output = process.StandardOutput.ReadToEnd(); } } catch (Exception e) { } finally { if (process != null) { process.Close(); } } if (bOS_X64) { Win32.Wow64RevertWow64FsRedirection(ptr); //恢复文件重定向 } return output; } }
3、截取输出流的
public static List<string> cmd(string p) { List<string> lines = new List<string>(); List<string> lineNet = new List<string>(); Process process = new Process(); ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = "cmd.exe"; startInfo.Arguments = "/c " + p; startInfo.UseShellExecute = false; startInfo.RedirectStandardInput = false; startInfo.RedirectStandardOutput = true; startInfo.CreateNoWindow = true; process.StartInfo = startInfo; startInfo.Verb = "RunAs"; try { process.Start(); System.IO.StreamReader reader = process.StandardOutput;//截取输出流 while (!reader.EndOfStream) { //if (reader.ReadLine().ToString().Contains("已禁用") || reader.ReadLine().ToString().Contains("已启用") || reader.ReadLine().ToString().Contains("Enabled") || reader.ReadLine().ToString().Contains("Disabled")) //{ lineNet.Add(reader.ReadLine()); //} } foreach (var item in lineNet) { if (item.Contains("已禁用") || item.Contains("已启用") || item.Contains("Disabled") || item.Contains("Enabled")) { lines.Add(item); } } } catch (Exception e) { } finally { if (process != null) { process.Close(); } } return lines; }