VBS中執行外部程式取得Console上的結果

程式技術 2007/08/07 10:33
views: 66650 times
在windows平台下, 透過 vbs 我們可以很容易地撰寫一些 script 做為應用程式間的連結及整合, 雖然 vbs 的效能不好, 不過透過 vbs 進行整合各外部程式及連結資料庫的讀寫是十分方便容易的.

往往在呼叫外部程式時, 我們需要取得該程式的回傳結果, 並進一步解析(parse)以取得結果的內容來處理後續要進行的作業, 所以如何取得外部程式的執行結果, 就是本篇文章要介紹的內容.

在 vbs 中一般我們要執行外部程式並等待執行完成可以透過 WScript.Shell (WshShell) 物件的 Run 方法, 例如:



其中 5 只是以目前的位置及大小呈現, 後面的 true 則是等待執行的結果, 而 ret 就取得程式的執行結果 (error code)

但若是要取得像 ipconfig 這樣指令的結果 (輸出在 console 上的), 則必須使用 Exec 方法, 但 Exec 方法並沒有等待的呼叫方式, 所以必須自行利用該方法的回傳物件 WshScriptExec 的 Staus 屬性來進行判斷是否執行結束(0為執行中, 1為執行結束), 而我們所要取得程式的執行結果, 則是利用該 WshScriptExec 物件的 StdOut 來取得, 由於該 StdOut 為 TextStream, 所以我們若要整個取出, 就使用 ReadAll 方法即可, 程式如下:



Run 方法參考: http://msdn2.microsoft.com/en-us/library/d5fk67ky.aspx
Exec 方法參考: http://msdn2.microsoft.com/en-us/library/ateytk4a.aspx

top








SanDisk Ultra SDHC Class6 16GB記憶卡 Nikon COOLPIX S30 夏日防水時尚機(公司貨) SAPIDO傻多 Mini USB供電小口袋機(RB-1632) ViewSonic ViewPad 7e ★親民平板電腦 [快]SAMSUNG WB150F WiFi 18倍變焦高畫質數位相機(公司貨) TP-LINK  TL-WR841ND 300Mbps 無線 N 路由器 PAPAGO! P3 車道偏離/車距警示行車記錄器 SanDisk 16GB Mobile Ultra microSDHC 附轉卡(平輸) Sony Ericsson Xperia neo V MT11i 影音娛樂手機 SAPIDO傻多  N速Gigabit 多網型無線寬頻分享器 (GR-1733) (繁中版)Panasonic GF3+14mm F2.5+14-42mm 雙鏡組 人因 Ergotech Tablet  多媒體娛樂機 ★FujiXerox DocuPrint P205b S-LED雷射印表機(粉紅機) (繁中版)Panasonic GF3+14mm F2.5+14-42mm 雙鏡組 飛利浦免油健康氣炸鍋(HD9220) 華擎平台【龍神傳說】四核SSD獨顯電玩機 美國VIZIO 47吋Full HD液晶顯示器+視訊盒 E470VL-TW(M) JSmax Android MID-1023 10.1吋平板電腦(全新升級版) lenovo ideapad G575雙核心15吋筆電【含微軟Windows 7】315301 Lenovo ideapad G570 59-309037 新雙核B950 15.6吋筆電 美國西屋42吋FHD液晶顯示器+視訊盒(LC-42E300A) OCZ Solid 3 120GB 2.5吋 SATA3 固態硬碟 HP LaserJet Pro CP1025nw 無線迷你彩色雷射印表機 D-Link DHP-501AV 500Mbps電力線網路橋接器(雙包裝) IBT-1073VOD 雲端劇院 Brinno Garden Watch Cam 生活記錄器 SAPIDO N速 3.5G易享機 支援BT (GR-1222) 35合1掌上型麻將機2代 三洋 SANYO 日本原廠 18650 全新高效能高容 2600mAh 鋰電池充電組


 Waiting...