在 Windows 系統上使用 ffmpeg
進行影音轉檔、壓縮或截圖等操作時,很多人會將 ffmpeg.exe
放在某個專案資料夾,或直接安裝到系統並設定 PATH 讓其全域可用。但當目錄內和環境變數中同時存在 ffmpeg.exe 時,究竟系統會優先執行哪一個版本?本文將帶你徹底釐清 Windows 尋找可執行檔的順序與背後原理。
Windows 尋找可執行檔的優先順序
當你在命令提示字元(CMD)或 PowerShell 輸入 ffmpeg
時,Windows 會依照下列順序搜尋並執行對應的可執行檔:
- 目前目錄(Current Directory)
- Windows 系統目錄(如 C:\Windows\System32)
- Windows 目錄(如 C:\Windows)
- PATH 環境變數中設定的所有資料夾(依順序)
也就是說,只要你 cd
到某個有 ffmpeg.exe
的資料夾,再執行 ffmpeg
,系統就會優先執行該目錄下的 ffmpeg.exe,而不是全域 PATH 所指定的版本。
實際範例說明
假設你有兩個 ffmpeg:
D:\project\ffmpeg.exe
(專案本地)
C:\ffmpeg\bin\ffmpeg.exe
(全域,且已加入 PATH)
操作流程如下:
cd D:\project
ffmpeg -version
這時 Windows 會直接執行 D:\project\ffmpeg.exe
,即使系統有其他全域版本存在。
如果你在其他目錄(沒有 ffmpeg.exe)下執行,才會去 PATH 裡尋找全域版本。
如何確認目前執行的是哪個 ffmpeg?
可以利用 where ffmpeg
指令查詢:
where ffmpeg
命令會依順序顯示所有能找到的 ffmpeg.exe 路徑,最上面的就是優先執行的版本。
結論
當目錄內存在 ffmpeg.exe 並在該目錄下執行時,一定優先使用本地的可執行檔。
只有當目前目錄沒有該檔案時,Windows 才會依照 PATH 環境變數去尋找全域的 ffmpeg.exe。
這一機制不僅適用於 ffmpeg,也適用於所有可執行檔(.exe),提醒你在不同專案與系統設定間注意版本差異,避免執行到錯誤的程式。