Windows在PATH中搜索可执行文件的相对顺序是什么?

Jee*_*enu 29 vim path batch-file wrapper

如果我有a.com,a.cmd,a.bat和a.exe文件%PATH%,如果我只调用命令"a",Windows会选择哪一个?这是M $的正式规格吗?

我只是想用-n包装我的gvim.exe可执行文件,但我的gvim.bat似乎既不是从命令行运行,也不是从运行对话框运行.

mjv*_*mjv 16

请参阅Microsoft Technet上的命令搜索序列

PATH和PATHEXT环境变量各自提供搜索序列的元素:PATH是要查找的目录" where "的有序列表,PATHEXT是要查找的文件扩展名(" what ")的有序列表(如果是扩展名)没有在命令行中明确提供).但是,在使用PATH之前,会搜索当前目录.

PATHEXT变量默认为".COM; .EXE; .BAT; .CMD"

  • @Jeenu,这很奇怪。然而,一个可能的解释是,在您期望的 PATH 位置之前找到了 gvim 的另一个实例(或引用它的 bat 文件)。手动检查路径,就像控制台一样。(或者证明这一点的另一种方法是暂时重命名您认为来自的目录中的 exe,看看调用该命令是否不会因找不到 exe 而失败。 (2认同)

Ton*_*ler 13

摘自mjv提供的Microsoft Technet链接:

Windows将从左到右遍历PATH中的目录(正常列表顺序).在每个中,它都会尝试在继续下一个PATH条目之前,从左到右定位每个PATHEXT的文件.它找到的第一个文件获胜.

因此,在您的情况下,您需要更改PATHEXT,以便.BAT在.EXE之前(或者它将始终首先找到.exe而不是您最有可能想要覆盖它的.bat,如果在同一目录中)并且还要PATH列表中的'覆盖'gvim.bat之前(最早?)的路径比找到gvim.*的任何地方(因为它在继续沿着PATH之前尝试每个PATHEXT)