標籤:
從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
Windows批處理 調用程式後 不等待子進程 父進程繼續執行命令