透過 LISP (getenv) 讀取 Windows 環境變數
AutoLISP 函數 (getenv "變數名") 可讀取作業系統環境變數,常用於自動化腳本判斷使用者、路徑、系統資訊等。本文彙整實務上最常用的環境變數分類與範例。
系統資訊類
| 環境變數 | 回傳值說明 | 範例 |
| Path | 系統執行檔搜尋路徑 | C:\Windows;C:\Windows\System32;... |
| COMSPEC | 命令處理器路徑 | C:\Windows\System32\cmd.exe |
| UserName | 目前登入使用者名稱 | JohnDoe |
| ComputerName | 電腦名稱 | DESKTOP-ABC123 |
| OS | 作業系統版本 | Windows_NT |
| SystemDrive | 系統磁碟機 | C: |
| SystemRoot | 系統根目錄 | C:\Windows |
| Windir | Windows 目錄 | C:\Windows |
| UserProfile | 使用者設定檔路徑 | C:\Users\JohnDoe |
| Temp / TMP | 暫存檔路徑 | C:\Users\JohnDoe\AppData\Local\Temp |
| PATHEXT | 可執行副檔名 | .COM;.EXE;.BAT;.CMD;... |
| MaxArray | 最大陣列維度 (LISP 限制) | 1000000 |
AutoCAD 專用路徑與設定類
| 環境變數 | 對應系統變數/用途 | 備註 |
| ACAD | 支援檔案搜尋路徑 | 對應 ACADPREFIX |
| ANSIHatch / ISOHatch | ANSI/ISO 填充圖案檔 | 受 MEASUREINIT 影響 |
| ANSILinetype / ISOLinetype | ANSI/ISO 線型檔 | 受 MEASUREINIT 影響 |
| StartUpType | 啟動對話框模式 | 如 "NEW"、"OPEN" |
| LastTemplate | 上次使用的 .dwt 檔 | 字串 |
| TemplatePath | 樣板檔搜尋路徑 | 字串 |
| PrinterConfigDir | 印表機設定檔 (.pc3) 路徑 | 字串 |
| PrinterStyleSheetDir | 列印樣式表 (.ctb/.stb) 路徑 | 字串 |
| PrinterDescDir | 印表機驅動程式 (PMP) 路徑 | 字串 |
| DefaultFormatForSave | 預設儲存版本格式代碼 | 整數 |
| DefaultConfig | 預設 .pc3 檔名 | 字串 |
| ACADLOGFILE | 日誌檔路徑 | 字串 |
| AVEMAPS | 材質貼圖搜尋路徑 | 字串 |
| DatabaseWorkSpacePath | 資料連結 (DBConnect) 工作空間路徑 | 字串 |
編輯器與介面設定類 (儲存於註冊表/使用者設定檔)
| 環境變數 | 對應系統變數 | 說明 |
| AutoSnapControl | AUTOSNAP | 自動捕捉/極軸/追蹤位碼 |
| AutoSnapSize | APERTURE | 捕捉框大小 |
| PickBox | PICKBOX | 選取框大小 |
| PickFirst | PICKFIRST | 先選後命令 |
| PickAuto | PICKAUTO | 視窗選取模式 |
| MenuOptionFlags | MENUCTL | 選單控制位碼 |
| FontMappingFile | - | 字型對應表檔案 |
| LogFilePath | - | 命令記錄檔路徑 |
| MTextEditor | MTEXTED | 多行文字編輯器 |
| XrefLoadPath | - | 外部參照載入路徑 |
| SaveFilePath | SAVEFILEPATH | 自動儲存路徑 |
| AcadLspAsDoc | ACADLSPASDOC | LSP 載入模式 |
圖形視窗顏色與顯示類
| 環境變數 | 說明 |
| Background | 模型空間背景色 (整數色碼) |
| Layout background | 圖紙空間背景色 |
| XhairPickboxEtc | 模型空間十字光標/選取框顏色 |
| LayoutXhairPickboxEtc | 圖紙空間十字光標/選取框顏色 |
| Autotracking vector | 自動追蹤向量顏色 |
| CursorSize | 十字光標大小 (1-100%) |
| FontFace / FontHeight / FontWeight / FontItalic / FontPitchAndFamily | 螢幕選單字型設定 |
| HideWarningDialogs | 隱藏特定警告對話框位碼 |
| SDIMode | 單文件介面模式 (0=多文件, 1=單文件) |
實務應用範例
; 取得使用者暫存資料夾建立暫存檔
(setq tmpPath (getenv "Temp"))
(setq myTmpFile (strcat tmpPath "\\MyLispTemp.tmp"))
; 判斷是否為 64 位元系統
(if (vl-string-search "64" (getenv "PROCESSOR_ARCHITECTURE"))
(princ "\n64-bit OS")
(princ "\n32-bit OS"))
; 取得 AutoCAD 樣板路徑
(setq tplPath (getenv "TemplatePath"))
注意事項
- 環境變數名稱不區分大小寫。
- 部分變數需重新啟動 AutoCAD 才生效(如路徑類)。
- 寫入環境變數請用
(setenv "VarName" "Value"),僅影響目前工作階段與使用者註冊表。
- 系統變數 (如 OSMODE) 請用
getvar/setvar,勿混淆。