【发布时间】:2010-12-11 19:51:55
【问题描述】:
如果我有 a.com、a.cmd、a.bat 和 a.exe 文件 %PATH%,如果我只调用命令“a”,Windows 会选择哪一个?这是 M$ 官方指定的吗?
我只是想用 -n 包装我的 gvim.exe 可执行文件,但我的 gvim.bat 似乎既不能从命令行运行,也不能从“运行”对话框运行。
【问题讨论】:
标签: batch-file path vim wrapper
如果我有 a.com、a.cmd、a.bat 和 a.exe 文件 %PATH%,如果我只调用命令“a”,Windows 会选择哪一个?这是 M$ 官方指定的吗?
我只是想用 -n 包装我的 gvim.exe 可执行文件,但我的 gvim.bat 似乎既不能从命令行运行,也不能从“运行”对话框运行。
【问题讨论】:
标签: batch-file path vim wrapper
请参阅 Microsoft Docs 上的 command search sequence
PATH 和 PATHEXT 环境变量各自提供搜索序列的一个元素:PATH 是要查找的目录“where”的有序列表,PATHEXT 是文件扩展名的有序列表(“what") 来查找(以防命令行上未明确提供扩展名)。但是,在使用 PATH 之前,会搜索当前目录。
PATHEXT 变量默认为“.COM;.EXE;.BAT;.CMD”
【讨论】:
python3.5 命令不能在Windows 上使用PATH...
摘自mjv提供的Microsoft Technet链接:
Windows 将从左到右逐步遍历 PATH 中的目录(正常列表顺序)。 在其中的每一个中,它都会尝试定位一个文件,其中每个 PATHEXT 也是从左到右,然后继续下一个 PATH 条目。 它找到的第一个文件获胜。
因此,在您的情况下,您需要更改 PATHEXT 以便 .BAT 在 .EXE 之前出现(或者它总是会首先找到 .exe 而不是您最有可能想要覆盖它的 .bat,如果在同一目录中)并且还将你的“覆盖”gvim.bat 的路径更早地(最早?)放在 PATH 列表中,而不是它可以找到 gvim.* 的任何地方(因为它会尝试每个 PATHEXT 中的每个路径,然后再继续下 PATH)
【讨论】:
我相信它会遍历 %PATHEXT% 并尝试其中的每一个
【讨论】: