批處理代碼遇到路徑中間有空格怎麼辦?

案例1:綠化K-Meleon程序

本機有環境變量:%appdata%,此變量值中有空格,形如C:/Documents and Settings/Administrator/Application Data,

編寫批處理時需要引用此變量,比如md %appdata%/K-Meleon,問題來了,系統報錯 “子目錄或文件C:/Documents 已經存在。處理:C:/Documents 時出錯”。解決辦法是增加引號即可:形如 “%appdata%/K-Meleon”或者 “%appdata%”/K-Meleon。

  1. @echo off
  2. md "%appdata%/K-Meleon"
  3. copy profiles.ini "%appdata%/K-Meleon"
  4. pause

案例2:設置編譯Java程序的處理 引自 http://hi.baidu.com/wjsblog/blog/item/30f19543909cac1472f05d27.html

本機環境變量的設置:java_home = C:/Program Files/Java/jdk1.5.0_09

*.bat中的命令格式:

%java_home%/bin/java 或者 C:/Program Files/Java/jdk1.5.0_09/bin/java

批處理文件中有以上這一行語句,要調用jdk下的java.exe ,但是我的jdk安裝目錄帶空格的,運行這個.bat發現提示錯誤: “c:/Program” 不是內部或外部命令,檢查了下,發現路徑沒有填寫錯誤因此本人推斷DOS中可能無法識別路徑中有空格的情況,因此就google了一把還發現真的是這樣,不過期間也在別人的機器上試了一把,卻發現可以跑,巧合的是他安裝的jdk路徑和我的機器是一樣的呀,難道是本人的RP問題嗎?答案肯定是NO,檢查了下他的環境變量的設置是:java_home = C:/PROGRA~1/Java/jdk1.5.0_14, 而我的設置是直接填真實的路徑:java_home = C:/Program Files/Java/jdk1.5.0_09 區別就在這個“PROGRA~1”和帶空格的真實路徑“Program Files”之間了,環境變量可以用特殊的字符代替從而達到替換空格方便使用的目的,當然大家手工設置一般不會這樣子去搞,都是直接拷貝路徑,這也沒有關係,對帶空格的路徑在bat代碼中用雙引號"" 給它引起來就OK了,改寫成這樣就OK了:

"%java_home%"/bin/java 或者 "C:/Program Files"/Java/jdk1.5.0_09/bin/java

綜上所述:解決空格問題一共有兩種辦法,一個是想辦法在環境變量設置的時候用特殊字符給他替換掉,另外一個就是在寫代碼的時候 用雙引號給有空格的路徑給它引起來就OK了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章