.Net ( C# ) 調用控制台程式並取得輸出結果

來源:互聯網
上載者:User

來自三角貓

.Net本身的功能雖然很強,但是,有些時候,控制台、命令列的功用還是不可忽視的,恰當的使用命令列,可以起到事半功倍的效果

這裡要說的是以 .net 的程式為宿主,調用 命令列程式,執行某些操作,並將命令列的輸出結果返回到 .net 宿主裡。我們說的控制台程式,並不是單純的指cmd.exe/command.exe,而是泛指具有標準輸入、輸出功能的程式。因為通常的控制台程式,多數是在 cmd 命令列介面裡執行的,所以,我們以cmd為例子來說

大家在cmd命令列裡,敲入 help?,可以看到如下輸出:(以XP為例,其他動作系統差別不大)

ASSOC    顯示或修改副檔名關聯。
AT       計劃在電腦上啟動並執行命令和程式。
ATTRIB   顯示或變更檔屬性。
BREAK    設定或清除擴充式 CTRL+C 檢查。
CACLS    顯示或修改檔案的存取控制清單(ACLs)。
CALL     從另一個批次程式調用這一個。
CD       顯示目前的目錄的名稱或將其更改。
CHCP     顯示或設定活動字碼頁數。
CHDIR    顯示目前的目錄的名稱或將其更改。
CHKDSK   檢查磁碟並顯示狀態報表。
CHKNTFS  顯示或修改啟動時間磁碟檢查。
CLS      清除螢幕。
CMD      開啟另一個 Windows 命令解釋程式視窗。
COLOR    設定預設控制台前景和背景顏色。
COMP     比較兩個或兩套檔案的內容。
COMPACT  顯示或更改 NTFS 分區上檔案的壓縮。
CONVERT  將 FAT 卷轉換成 NTFS。您不能轉換當前磁碟機。
COPY     將至少一個檔案複製到另一個位置。
DATE     顯示或設定日期。
DEL      刪除至少一個檔案。
DIR      顯示一個目錄中的檔案和子目錄。
DISKCOMP 比較兩個磁碟片的內容。
DISKCOPY 將一個磁碟片的內容複寫到另一個磁碟片。
DOSKEY   編輯命令行、調用 Windows 命令並建立宏。
ECHO     顯示訊息,或將命令回顯開啟或關上。
ENDLOCAL 結束批檔案中環境更改的本地化。
ERASE    刪除至少一個檔案。
EXIT     退出 CMD.EXE 程式(命令解釋程式)。
FC       比較兩個或兩套檔案,並顯示不同處。
FIND     在檔案中搜尋文字字串。
FINDSTR  在檔案中搜尋字串。
FOR      為一套檔案中的每個檔案運行一個指定的命令。
FORMAT   格式化磁碟,以便跟 Windows 使用。
FTYPE    顯示或修改用於副檔名關聯的檔案類型。
GOTO     將 Windows 命令解釋程式指向批次程式中某個標明的行。
GRAFTABL 啟用 Windows 來以映像模式顯示擴充字元集。
HELP     提供 Windows 命令的協助資訊。
IF       執行批次程式中的條件性處理。
LABEL    建立、更改或刪除磁碟的卷標。
MD       建立目錄。
MKDIR    建立目錄。
MODE     配置系統裝置。
MORE     一次顯示一個結果螢幕。
MOVE     將檔案從一個目錄移到另一個目錄。
PATH     顯示或設定可執行檔的搜尋路徑。
PAUSE    暫停批檔案的處理並顯示訊息。
POPD     還原 PUSHD 儲存的目前的目錄的上一個值。
PRINT    列印文字檔。
PROMPT   更改 Windows 命令提示字元。
PUSHD    儲存目前的目錄,然後對其變更。
RD       刪除目錄。
RECOVER  從有問題的磁碟恢複可讀資訊。
REM      記錄批檔案或 CONFIG.SYS 中的注釋。
REN      重新命名檔案。
RENAME   重新命名檔案。
REPLACE  替換檔案。
RMDIR    刪除目錄。
SET      顯示、設定或刪除 Windows 環境變數。
SETLOCAL 開始批檔案中環境更改的本地化。
SHIFT    更換批檔案中可替換參數的位置。
SORT     對輸入進行分類。
START    啟動另一個視窗來運行指定的程式或命令。
SUBST    將路徑跟一個磁碟機代號關聯。
TIME     顯示或設定系統時間。
TITLE    設定 CMD.EXE 會話的視窗標題。
TREE     以圖形模式顯示磁碟機或路徑的目錄結構。
TYPE     顯示文字檔的內容。
VER      顯示 Windows 版本。
VERIFY   告訴 Windows 是否驗證檔案是否已正確寫入磁碟。
VOL      顯示磁碟卷標和序號。下面,我們舉個例子,比如: 取得當前的系統資訊,那麼我只需要調用 systeminfo 即可

//執行個體化一個進程類 Process cmd = new Process(); //獲得系統資訊,使用的是 systeminfo.exe 這個控制台程式 cmd.StartInfo.FileName = "systeminfo.exe"; //將cmd的標準輸入和輸出全部重新導向到.NET的程式裡 cmd.StartInfo.UseShellExecute = false; //此處必須為false否則引發異常 cmd.StartInfo.RedirectStandardInput = true; //標準輸入 cmd.StartInfo.RedirectStandardOutput = true; //標準輸出 //不顯示命令列視窗介面 cmd.StartInfo.CreateNoWindow = true; cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; cmd.Start(); //啟動進程 //擷取輸出 //需要說明的:此處是指明開始擷取,要擷取的內容, //只有等進程退出後才能真正拿到 this.textBox1.Text = cmd.StandardOutput.ReadToEnd(); cmd.WaitForExit();//等待控制台程式執行完成 cmd.Close();//關閉該進程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.