CMD.EXE 是 Windows 核心命令解譯器,掌握其啟動參數對撰寫批次檔、自動化腳本、疑難排解至關重要。本文系統整理官方文件參數含義、引號處理邏輯、AutoRun 機制與命令擴充功能控制。
CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
[[/S] [/C | /K] string]
| 參數 | 說明 |
|---|---|
/C | 執行 string 指定命令後終止 |
/K | 執行 string 指定命令後保留視窗 |
/S | 修改 /C 或 /K 後的字串處理規則 (見引號邏輯) |
/Q | 關閉回應 (關閉 echo) |
/D | 停用登錄表 AutoRun 命令自動執行 |
/A | 管道/檔案輸出為 ANSI |
/U | 管道/檔案輸出為 Unicode |
/T:fg | 設定前景/背景色 (參見 COLOR /?) |
/E:ON | 啟用命令擴充功能 (預設開啟) |
/E:OFF | 停用命令擴充功能 |
/F:ON | 啟用檔案/目錄名稱完成字元 (Tab 鍵) |
/F:OFF | 停用完成字元 |
/V:ON | 啟用延遲環境變數擴展 (!var! 語法) |
/V:OFF | 停用延遲擴展 |
若 string 包含引號,/S 影響處理方式:
/S、恰好兩個引號、引號間無特殊字元 (<>()@^|)、引號間有空白、引號間含可執行檔名稱。最佳實務:習慣加 /S 並自行管理引號,避免歧義。
若未指定 /D,CMD 啟動時會依序執行:
HKLM\Software\Microsoft\Command Processor\AutoRun
HKCU\Software\Microsoft\Command Processor\AutoRun
常被惡意軟體利用植入命令,建議定期檢查或啟動腳本加 /D。
預設啟用,提供:
IF, FOR, SET, CALL, SHIFT 等指令。%~ 修飾符擷取路徑/檔名/擴展名/大小/時間等屬性。HKLM/HKCU\...\Command Processor\EnableExtensions (REG_DWORD) 全域控制。/V:ON)set VAR=BEFORE
set VAR=AFTER && echo %VAR% &REM 輸出 BEFORE (立即展開)
set VAR=AFTER && echo !VAR! &REM 輸出 AFTER (延遲展開,需 /V:ON)
在 FOR 迴圈、複合命令中極為重要。
/X = /E:ON/Y = /E:OFF/R = /C