2009-10-31 64 views
19

如果我有a.com,a.cmd,a.bat,和a.exe的文件%PATH%,哪一個會挑的Windows,如果我只是調用命令「一」?這是正式由M $指定的地方嗎?Windows在PATH中搜索可執行文件的相對順序是什麼?

我只是想換我的gvim.exe可執行文件-n,但我gvim.bat似乎沒有得到既不運行在命令行,也沒有從運行對話框。

回答

11

command search sequence Microsoft TechNet上

PATH和PATHEXT環境變量分別提供搜索序列的元素:路徑是有序的目錄「其中」名單看,PATHEXT是文件擴展名的有序列表(「什麼」)來尋找(如果擴展未明確提供的命令行)。然而,在使用PATH之前,搜索當前目錄。

的PATHEXT變量默認爲 「.COM,.EXE; .BAT; .CMD」

+0

我只是從運行對話框調用gvim,不管PATHEXT設置爲什麼,它只運行gvim.exe;即使我在運行對話框中說gvim.bat。 – Jeenu 2009-10-31 05:29:30

+1

@Jeenu,這很奇怪。然而,一個可能的解釋是gvim的另一個實例(或者引用它的bat文件)在你期望的PATH位置之前被發現。手動查看路徑,就像控制檯會做的一樣。 (或另一種方法來證明這是臨時重命名您認爲它來自的目錄中的exe文件,看看是否通過找不到該exe文件來調用該命令不會失敗。 – mjv 2009-10-31 06:12:29

+0

感謝*「在擴展名不是在命令行中明確提供了「*注意,這就是爲什麼'python3.5'命令無法在Windows上使用PATH ... – dedek 2016-06-28 15:00:06

2

我相信它走過%PATHEXT%和嘗試每個這些

7

從所提供的微軟的Technet鏈接總結了MJV:

Windows將通過目錄的路徑步驟左向右(正常列表順序)。 在每一種,它試圖定位每個PATHEXT也左至右文件,繼續下一個路徑條目之前。 它找到的第一個文件獲勝。

因此,對於您的情況,您需要更改PATHEXT以便.BAT出現在.EXE之前(或者它總是會首先找到.exe,而不是最可能要重寫它的.bat,如果在同一個目錄中),並也把你的路徑「覆蓋」的gvim.bat早期(最早?)在PATH上市比任何地方它可以找到GVIM。*(因爲它試圖之前上下通道將在每個每PATHEXT)

相關問題