What's the relative order with which Windows search for executable files in PATH?

心不动则不痛 提交于 2019-12-17 15:53:40

问题


If I have a.com, a.cmd, a.bat, and a.exe files %PATH%, which one would Windows pick if I invoke just the command "a"? Is this officially spec-ed somewhere by M$?

I just wanted to wrap my gvim.exe executable with -n, but my gvim.bat doesn't appear to get run neither from the command line, nor from the Run dialog.


回答1:


See the command search sequence on Microsoft Technet

The PATH and PATHEXT environmental variables each provide an element of the search sequence: PATH is the ordered list of directories "where" to look, and PATHEXT is the ordered list of file extensions ("what") to look for (in case the extension isn't explicitly provided on the command line). Prior to using the PATH however, the current directory is searched.

The PATHEXT variable defaults to ".COM;.EXE;.BAT;.CMD"




回答2:


Summarized from the Microsoft Technet link provided by mjv:

Windows will step through the directories in PATH from left to right (normal list order). In each of these, it attempts to locate a file with each PATHEXT also left to right, before continuing to the next PATH entry. The first file it finds wins.

So, in your case, you need to change PATHEXT so that .BAT comes before .EXE (or it will always find .exe first and not the .bat you most likely want to override it, if in the same directory) and also put the path of your 'override' gvim.bat earlier (earliest?) in the PATH listing than anywhere it could find gvim.* (because it tries every PATHEXT in each before going on down PATH)




回答3:


I believe it walks through %PATHEXT% and tries each of those



来源:https://stackoverflow.com/questions/1653472/whats-the-relative-order-with-which-windows-search-for-executable-files-in-path

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!