Windows批處理 呼叫程式後 不等待子程式 父程式繼續執行命令

spectre2發表於2012-01-10
從DOS過來的老鳥應該都知道批處理,這個功能在WINDOWS中仍然保留著。批處理說白了就是把一系列DOS命令寫在一個文字檔案裡,然後把這個檔案命名為XXX.bat(WINXP以後的系統也可以命名為*.cmd),然後執行它就可以一次執行一系列命令和程式了,當然也包括WINDOWS下的程式。
昨天處理一個問題時需要寫一個批處理,批處理的前面執行了幾個DOS命令,最後呼叫一個WINDOWS程式。可問題是,呼叫的WINDOWS程式開啟後,CMD命令提示符視窗不會關閉,而是要等待這個WINDOWS程式關閉後它才會關閉。回想以前DOS下的批處理,都是執行一個程式,然後等待這個程式執行完畢後才會執行下一個程式,因為DOS是單任務作業系統嘛。但WINDOWS裡有沒有什麼方法讓批處理呼叫程式後不用等待程式結束而繼續執行後面的命令呢?網上搜了一下,也沒找出個結果。自己又研究了半天,終於解決了。解決的關鍵就是使用了一個不太常用的命令:start
一開始我的批處理是這麼寫的(“/”和後面的內容是註釋):
@echo off /這是不讓CMD視窗中顯示執行的什麼命令 DOS命令 /這是一系列DOS命令,用DOS命令代替 abc /最後要呼叫的WINDOWS程式檔名為abc.exe echo "ok" /輸出“OK” ping /n 5 127.1 >nul /延時 5S exit
問題就是這麼寫死活都無法在執行abc.exe之後自動關閉CMD視窗。後來我終於想起來WINDOWS的命令提符中有一個start命令,心想使用它也許批處理就不會等待abc.exe執行完畢了。於是把批處理改為:
@echo off /這是不讓CMD視窗中顯示執行的什麼命令 DOS命令 /這是一系列DOS命令,用DOS命令代替 start abc /最後要呼叫的WINDOWS程式檔名為abc.exe echo "ok" /輸出“OK” ping /n 5 127.1 >nul /延時 5S exit
果然,abc.exe執行之後,這個批處理就繼續執行後面的exit命令,從而自己退出了。原來,使用start呼叫的程式,批處理是不會等待程式執行結束的。遇到與我相同問題的朋友,不妨一試。

參考:http://www.cnblogs.com/yukaizhao/archive/2010/07/03/1770659.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14184018/viewspace-714703/,如需轉載,請註明出處,否則將追究法律責任。

相關文章