yag Site Admin
註冊時間: 2007-05-02 文章: 689
2704.11 果凍幣
|
發表於: 2007-5-12, AM 10:54 星期六 文章主題: 在WinXP中以bat檔執行兩個以上的exe檔 |
|
|
昨天有個朋友遇到了一個小問題
他有在玩寒冰霸權
而他每次玩寒冰之前,都會先開啟一個叫WC3Banlist.exe的程式,這個程式可以讓他在遊戲中自動踢除黑名單上的人
不過這不是重點
重點是,他嫌每次進入遊戲前都要手動去點兩個exe檔很麻煩
所以想做一個Bat檔,來執行這兩個exe檔,這樣他以後就只需要點一次bat檔就可以了
問題就出在這裡,他沒辦法直接執行兩個exe檔,在WinXP底下,bat中直接打上這兩個exe檔,會先執行第一個,然後bat停住,等到第一個exe檔被關掉後,才會執行第二個,錯誤範例如下:
代碼: | "E:\Program Files\WC3Banlist\WC3Banlist.exe"
"E:\Game\Warcraft III\Frozen Throne.exe" |
這時候,bat指令:start,就派得上用場了,可是如果在start之後加上有雙引號的字串,start會將此字串當成title,然後開啟一個無用的cmd視窗,錯誤範例如下:
代碼: | start "E:\Program Files\WC3Banlist\WC3Banlist.exe"
start "E:\Game\Warcraft III\Frozen Throne.exe" |
而如果把雙引號去掉,在某些情況下會可以正常執行,某些情況下不行。什麼情況下不行呢?當你exe檔所在位置的資料夾名稱中有空白字元時不行,像是Program Files,中間一但有個空白,對start指令來說就會認為是兩段分別開來的參數,因此就會出現錯誤,錯誤範例如下:
代碼: | start E:\Program Files\WC3Banlist\WC3Banlist.exe
start E:\Game\Warcraft III\Frozen Throne.exe |
這時應該要做的是,將每個包含有空白的路徑變成縮寫,Windows的路徑縮寫規則如下:
一、當前6個字元中並無空白時,取前6個字元,並於其後加上~1,湊成8個字元,如:
"Program Files" → Progra~1
"Frozen Throne" → Frozen~1
二、當總長度去掉空白字元有6個字元以上,而前6個字元中有空白時,省略空白,以後面的字元替補,總共取6個字元,並於其後加上~1,湊成8個字元,如:
"MSN Gaming Zone" → MSNGam~1
"My Documents" → MyDocu~1
三、當總長度去掉空白字元不足6個字元,而且其中含有空白字元時,省略空白,以後面的字元替補,剩下多少字元就取多少字元,並於其後加上~1,如:
"a b c" → abc~1
"my app" → myapp~1
"p h p BB" → phpBB~1
依據以上規則,想在執行寒冰前先執行自動踢除程式的正確範例如下:
代碼: | start E:\Progra~1\WC3Banlist\WC3Banlist.exe
start E:\Game\Warcra~1\Frozen~1.exe |
要注意的是,雖然WC3Banlist超過了8個字元,不過其中沒有空白,所以是不需要改成縮寫的唷。 |
|