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

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

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

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

Ответ 1

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

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

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

а для примера выше порядок его запуска:

something.exe
something.bat
something.cmd

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