在 Linux 底下要找到執行檔所在路徑真的非常容易,只要輸入 which 指令就能找到了,不過在 Windows 底下卻異常的困難 (其實是不知道),所以都常在想說如果 Windows 的命令提示字元下也有 which 指令那該有多好,最近找到好幾套工具都覺得不適用又有 Bugs,但最後找到了一段非常非常精簡的 Batch 批次檔,可以用來幫忙查出執行檔所在位置,而且這段批次檔僅僅只有 90 個字元就達成任務。
為了能讓搜尋指令檔所在位置的使用體驗與 Linux 一致,我決定將這個批次檔擺在 system32 目錄下,好讓我可以在任意目錄執行 which 指令,以下是設定的步驟:
1. 先在 C:\Windows\System32 目錄下建立一個空的檔案,並取名為 which.cmd
2. 用 Notepad 開啟這個檔案,並輸入以下這一行。沒錯!只有一行,而且是很難看懂的一行! ( 參考 )
@for %%e in (%PATHEXT%) do @for %%i in (%1%%e) do @if NOT "%%~$PATH:i"=="" echo %%~$PATH:i
3. 設定完成後我們立即來驗證程式是否生效,以下是指令執行的圖示,是不是非常好用呢!^_^
不過我因為寫這篇文章讓我意外的發現另一個 Windows 內建的 where.exe 命令工具 ( 請看上面第一張圖示紅框處往上第 2 個檔案 ),這才讓我驚覺原來 Windows 早在 Windows Server 2003 之後的作業系統就內建這個命令了 ( 註: 在 Windows XP 以前還沒內建 ),但為什麼沒見人提起過呢?我在想應該是這個工具先天上 SEO 就注定失敗的,你想想看你在 Google 搜尋 “where” 真的可以找到你要的東西嗎? XD
這個 where 命令就比上面利用的批次檔強大多了,基本上這個工具就是用來搜尋任何檔案用的,預設可以用來查找執行檔,但你要找任何其他類型的檔案、特定目錄下的檔案也都可以,甚至可以用萬用字元來搜尋檔案,非常非常的實用阿!以下我們來看看幾個經典的用法:
依照上圖編號說明如下:
- 預設的情況下如果搜尋一段文字時,會去 PATH 環境變數所定義的路徑去找執行檔出來
- 同上,執行的結果與用 which.cmd 如出一轍
- 你可以輸入萬用字元搜尋特定檔名的檔案,預設一樣會搜尋所有 PATH 環境變數所定義的路徑
- 由於我有將 c:\Windows\System32\inetsrv 加入到我的 PATH 環境變數,所以才查的到 appcmd
- 透過 /R 可以指定目錄搜尋,這樣就不會受限於 PATH 環境變數所定義的路徑,可搜尋任意檔案!
詳細的 where 命令工具說明可用 where /? 查詢用法。
相關連結