1. 程式人生 > >C#程式呼叫cmd.exe執行命令

C#程式呼叫cmd.exe執行命令

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();
                }
            }
        }

呼叫:

            string cmd = @"ipconfig/all";
            string output = "";
            CmdHelper.RunCmd(cmd, out output);
            MessageBox.Show(output);

轉自:http://www.cnblogs.com/njl041x/p/3881550.html

親測有效