1. 程式人生 > >執行.BAT指令碼閃退的詭異原因

執行.BAT指令碼閃退的詭異原因

          今日執行一個BAT指令碼檔案,發現僅僅閃了一下就退出了。於是我認為.BAT指令碼檔案本身有錯誤,所以開始排錯,以下是我排除錯誤的步驟:

          1.由於別處原先存在一個此BAT檔案的拷貝,而別處的那一個能正常執行,但這一個BAT卻不能正常執行,利用比較工具比較發現兩個BAT檔案的內容完全相同。所以排除了書寫錯誤。

           2.鑑於以上的基礎上,我只能懷疑是位置變了,BAT檔案裡面引用的相對路徑解析成絕對路徑後肯定變化了,可能因為絕對路徑的不同會有影響,因此我加了箇中pause一步步的試,發現也不是這個原因。

           3.鬱悶啊,無解啊。正在此時我發現了一個關鍵的問題,那就是此次不能執行的BAT檔案所在的資料夾名字裡麵包含了括號。因此我覺得問題可能是這個括號的原因,趕緊將括號去掉,一執行,瞬間不再閃退了,搞定。看來問題真的是BAT檔案所在資料夾的名字裡麵包含了括號的原因啊。

           好吧,既然已經知道問題所在了,那麼當然很好奇有沒有別人遇到過,或者有沒有對這個問題的詳細描述呢?果斷百度啊,可是發現的線索很少,僅僅一個微軟的英文資料裡面有提到。看來我是個大奇葩,居然這麼小概率的事件讓我遇到了。英文資料的網址:http://support.microsoft.com/kb/217127/en-us。

           基本意思是說.BAT指令碼檔名裡面不能有括號,否則會將括號解釋成為命令的。如果你非要用帶括號的名字來命名BAT指令碼檔案,可以在cmd窗口裡面將檔案用引號括起來就行了。圖例如下:

            

             但我今天這個問題算是一個新發現,那就是不僅BAT檔案本身的名字裡面不能包含括號字元,就連BAT檔案所在的資料夾以及更上層的資料夾的命名都不能包含括號。