C#隱式執行CMD命令

來源:互聯網
上載者:User

標籤:

本文實現C#隱式執行CMD功能命令。是樣本程式的主介面。

在命令文字框輸入DOS命令,點擊“Run”button。在以下的文字框中輸出執行結果。

以下是程式的完整代碼。

本程式沒有使用p.StandardOutput.ReadtoEnd()和p.StandardOutput.ReadLine()方法來獲得輸出,由於這些方法運行後畫面easy卡死。

而是通過調用非同步方法呼叫BeginOutputReadLine來擷取輸出。並在事件p.OutputDataReceived的事件處理方法中來處理結果。

using System;using System.Diagnostics;using System.IO;using System.Windows.Forms; namespace RunDosCommandForm{    publicpartialclassForm1 : Form    {        publicForm1()        {           InitializeComponent();        }         privatevoidbutton1_Click(object sender, EventArgse)        {           ExcuteDosCommand(textBox1.Text);        }         privatevoidExcuteDosCommand(string cmd)        {            try            {               Process p = newProcess();               p.StartInfo.FileName = "cmd";               p.StartInfo.UseShellExecute = false;               p.StartInfo.RedirectStandardInput = true;               p.StartInfo.RedirectStandardOutput = true;               p.StartInfo.RedirectStandardError = true;               p.StartInfo.CreateNoWindow = true;               p.OutputDataReceived += newDataReceivedEventHandler(sortProcess_OutputDataReceived);               p.Start();               StreamWriter cmdWriter = p.StandardInput;               p.BeginOutputReadLine();               if (!String.IsNullOrEmpty(cmd))               {                   cmdWriter.WriteLine(cmd);               }               cmdWriter.Close();               p.WaitForExit();               p.Close();              }            catch(Exception ex)            {               MessageBox.Show("運行命令失敗,請檢查輸入的命令是否正確!");            }        }         privatevoidsortProcess_OutputDataReceived(object sender,DataReceivedEventArgs e)        {            if(!String.IsNullOrEmpty(e.Data))            {               this.BeginInvoke(newAction(() => { this.listBox1.Items.Add(e.Data);}));                              }        }    }}

我們還能夠將須要執行的CMD命令儲存為BAT檔案。再使用Process類來執行。

Process p = new Process();//設定調用的程式名,不是系統檔案夾的須要完整路徑 p.StartInfo.FileName = "cmd.bat";//傳入運行參數 p.StartInfo.Arguments = "";p.StartInfo.UseShellExecute = false;//是否重新導向標準輸入 p.StartInfo.RedirectStandardInput = false;//是否重新導向標準轉出 p.StartInfo.RedirectStandardOutput = false;//是否重新導向錯誤 p.StartInfo.RedirectStandardError = false;//運行時是不是顯示表單 p.StartInfo.CreateNoWindow = true;//啟動 p.Start();p.WaitForExit();p.Close(); 


 


 

 

著作權聲明:本文博主原創文章,部落格,未經同意不得轉載。

C#隱式執行CMD命令

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.