C#程序調用cmd.exe執行命令


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM