標籤:添加 設定 ros lib 操作檔案 目錄 原因 mil 沒有
癥狀回放:
最近安裝一個Delphi的控制項,結果,在安裝之後啟動Delphi時出現了找不到相關檔案的錯誤。一開始以為是Delphi內的Library路徑沒有添加,查看,一切正常。再次啟動Delphi,提示說將xxx路徑插入到PATH環境變數中失敗,原因是PATH變數超出長度限制。
尋找根源:根據Delphi的提示,開啟環境變數設定視窗,發現PATH變數確實不短(安裝了很多開發工具,很多都需要設定環境變數),由於那個控制項存在獨立運行環境,需要寫入系統PATH環境變數。但偏偏這個控制項的名字又長的要命。先前有同學告訴我,PATH太長可以使用別名來解決,即建立其它名稱的環境變數,並在PATH中使用兩個“%”來引用,於是將一部分PATH路徑拿出來,建立了一個環境變數並在PATH中引用。再啟動Delphi,咦?另一個檔案又找不到了。反覆檢查發現,剛剛建立的環境變數已經起作用,但另外的路徑又丟失了。於是開啟CMD控制台,輸入PATH,才發現,PATH變數的值已經被截斷,原來那個使用別名的方法只是治標不治本。單條PATH變數可以插入了,變數值的長度限制還是存在。難道,非要我把每個程式都安裝到短檔案路徑中?
偏方醫治:當我無奈中想到重裝程式到短檔案路徑時,突然拉亮了另一盞燈。對,DOS8.3格式的短檔案名稱!(哈哈,當時我叫出來的第一句就是,你太有才了…)。所謂DOS8.3格式短檔案名稱就是檔案或目錄名分8位元組主檔案名和一個點加3位元組的副檔名,在非DOS時代的系統,雖然檔案名稱可以超出這個限制,但仍然可以使用該規則來操作檔案名稱,即使用我們經常見到的“~n”方式。那麼,既然很多檔案夾名稱都那樣的長(比如MS SQLSERVER的Microsoft SQL Server檔案夾),那使用DOS8.3格式的短檔案名稱來壓縮路徑,不就可以起到縮短PATH路徑的作用了?但是,我們又如何擷取一個檔案或目錄的短檔案名稱呢?其實系統已經給我們提供了這個工具,很簡單,在CMD控制台中運行 dir /n /x,那麼目前的目錄下的檔案名稱就以長/短兩種方式顯示出來,接下來就不用我說了吧…
後記:現在需要PATH環境變數的程式越來越多,PATH的空間也越來越小,真不知道此問題要何時才能解決。剛剛我在Microsoft的網站上找到了一個關於PATH長度限制補丁的說明,但由於整篇指東言西的描述讓人匪夷所思,大概是有一個可以把PATH擴充到2046位元組的補丁已經發出來,可是始終沒找到。本文敘述的方法也僅僅是治標不治本,但在不限制長度PATH環境變數出現之前,其不失為一種這種方法。
環境變數PATH超長問題[轉]