Порядок, в котором командная строка выполняет файлы с одинаковыми именами (a.bat vs a.cmd vs a.exe)

В каком порядке командная строка Windows выполняет файлы с одинаковыми именами, но с разными расширениями?

Например, у меня есть куча исполняемых файлов: something.cmd, something.bat и something.exe. Что из этого будет выполнено, когда я наберу something в командной строке (при условии, что они были на пути и т. Д.)? Если этот файл не существует, какой из них будет выполнен?

Есть ли ссылка, описывающая это?


person Daemin    schedule 03.03.2009    source источник


Ответы (1)


Хорошо, я провел несколько быстрых экспериментов, основываясь на некоторых других поисковых запросах.

Суть в том, что порядок команд зависит от порядка, в котором расширения хранятся в переменной среды PATHEXT. Итак, изначально у меня было:

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.RB;.RBW

а в приведенном выше примере порядок, в котором он запускался, был:

something.exe
something.bat
something.cmd

Изменение порядка, в котором они были определены в переменной среды PATHEXT, действительно изменило порядок, в котором они были выполнены.

person Daemin    schedule 03.03.2009
comment
Если переменная PATHEXT удалена, порядок будет таким же, как и в старые времена MS-DOS: COM, EXE, BAT и теперь CMD. - person Aacini; 03.11.2011