文章目錄

在終端機輸入 java、uv 這類指令時,Windows 會依序到 PATH 環境變數列出的資料夾找同名的程式,找到才會執行。剛裝好的命令列工具卻回報「無法辨識」時,多半是工具所在的資料夾不在 PATH 裡,或是終端機在安裝前就開著,還沒讀到新的 PATH。我們只要把那個資料夾加入使用者的 PATH,再重新開啟終端機,輸入指令名稱就能直接執行。
測試環境是 Windows 11(26H2),終端機分別用 Windows PowerShell 5.1、PowerShell 7.6 與命令提示字元,示範的 mytool 是一個只會印出版本號的小程式。
找不到指令的錯誤訊息
三種終端機的錯誤訊息寫法不同,意思都是在 PATH 的資料夾裡找不到這個名稱的程式:
| 終端機 | 錯誤訊息 |
|---|---|
| Windows PowerShell 5.1 | 無法辨識 'mytool' 詞彙是否為 Cmdlet、函數、指令檔或可執行程式的名稱 |
| PowerShell 7 | 無法將 'mytool' 字詞辨識為 Cmdlet、函式、指令檔或可執行程式的名稱 |
| 命令提示字元 | 'mytool' 不是內部或外部命令、可執行的程式或批次檔 |
在 Windows PowerShell 輸入 mytool --version 時,會看到這樣的紅字:

需要修改 PATH 的情況
終端機只會在開啟的那一刻讀取 PATH,之後安裝程式改了 PATH,已經開著的視窗也讀不到。很多安裝程式會自己把資料夾加進 PATH,例如用 WinGet 安裝 OpenJDK 與用官方腳本安裝 uv,所以先關掉終端機,從開始功能表重新開啟,再輸入一次指令,就能分辨是哪一種情況:
| 重新開啟的終端機 | 原因 | 處理方式 |
|---|---|---|
| 可以執行 | 原本的終端機在安裝前就開著 | 不用改設定 |
| 仍然找不到 | 工具所在的資料夾不在 PATH 裡 | 照下面的步驟把資料夾加入 PATH |
程式所在的資料夾
要加入 PATH 的是執行檔所在的資料夾,不是執行檔本身。工具的官方安裝說明通常會寫出安裝位置,自己下載的免安裝工具,就是解壓縮後放執行檔的那個資料夾。
同一個工具在另一台電腦上能執行時,可以在那台電腦用 where.exe 指令名稱 查出位置。我的電腦上幾個常用工具的位置如下,%USERPROFILE% 會展開成 C:\Users\使用者名稱:
| 工具 | 執行檔所在的資料夾 |
|---|---|
| uv | %USERPROFILE%\.local\bin |
| node、npm,以及用 npm 全域安裝的指令 | C:\nvm4w\nodejs(用 nvm-windows 安裝 Node.js 時) |
| java | C:\Program Files\Eclipse Adoptium\jdk-版本-hotspot\bin(Eclipse Temurin) |
在 PowerShell 裡,where 是另一個指令的簡寫,一定要寫成 where.exe。
把資料夾加入使用者的 PATH
PATH 分成「使用者變數」與「系統變數」兩份,終端機會把兩份合在一起使用。只有自己會用到的工具加在使用者變數就好,不需要系統管理員權限,也不會影響電腦上的其他帳號。
依序開啟「設定」、「系統」、「系統資訊」,點相關連結的「進階系統設定」,在「系統內容」視窗的「進階」分頁按「環境變數」:

在上半部的使用者變數裡選取「Path」,按「編輯」:

按右側的「新增」,在清單最下面的空白列貼上執行檔所在的資料夾,再依序按「編輯環境變數」與「環境變數」兩個視窗的「確定」儲存:

清單裡原本的路徑都不用動。要還原時回到同一個視窗,選取剛才新增的那一列按「刪除」,再按「確定」。
確認新的終端機能執行
儲存前就開著的 Windows PowerShell 裡再執行一次,結果還是無法辨識:

從開始功能表重新開啟終端機再執行,就會印出 mytool 1.0.0:

總結
Windows 找不到指令時,先從開始功能表重新開啟終端機重試,仍然找不到再把執行檔所在的資料夾加入使用者的 PATH。實測儲存前開著的視窗仍然回報無法辨識,重新開啟的終端機就能執行 mytool。

