標籤:window 假死 roc dir data 視窗 private end 程式
using System.Diagnostics;public class CmdHelper { private static string CmdPath = @"C:\Windows\System32\cmd.exe"; /// <summary> /// 執行cmd命令 /// 多命令請使用批處理命令串連符: /// <![CDATA[ /// &:同時執行兩個命令 /// |:將上一個命令的輸出,作為下一個命令的輸入 /// &&:當&&前的命令成功時,才執行&&後的命令 /// ||:當||前的命令失敗時,才執行||後的命令]]> /// 其他請百度 /// </summary> /// <param name="cmd"></param> /// <param name="output"></param> public static void RunCmd(string cmd, out string output) { cmd = cmd.Trim().TrimEnd(‘&‘) + "&exit";//說明:不管命令是否成功均執行exit命令,否則當調用ReadToEnd()方法時,會處於假死狀態 using (Process p = new Process()) { p.StartInfo.FileName = CmdPath; p.StartInfo.UseShellExecute = false; //是否使用作業系統shell啟動 p.StartInfo.RedirectStandardInput = true; //接受來自調用程式的輸入資訊 p.StartInfo.RedirectStandardOutput = true; //由調用程式擷取輸出資訊 p.StartInfo.RedirectStandardError = true; //重新導向標準錯誤輸出 p.StartInfo.CreateNoWindow = true; //不顯示程式視窗 p.Start();//啟動程式 //向cmd視窗寫入命令 p.StandardInput.WriteLine(cmd); p.StandardInput.AutoFlush = true; //擷取cmd視窗的輸出資訊 output = p.StandardOutput.ReadToEnd(); p.WaitForExit();//等待程式執行完退出進程 p.Close(); } } }使用樣本樣本1:顯示ipconfig資訊string cmd =@"ipconfig/all";樣本2:開啟VS2010命令提示 string cmd =@"C:&cd C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC&vcvarsall.bat";樣本3:使用sn.exe工具產生金鑰組並顯示 string cmd =@"C:&cd C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC&vcvarsall.bat&sn -k d:\LicBase.snk&sn -p d:\LicBase.snk d:\LicBasePubKey.snk&sn -tp d:\LicBasePubKey.snk";調用string output = "";CmdHelper.RunCmd(cmd, out output);MessageBox.Show(output);
C#調用cmd命令