Тип пакетного файла всегда принимает exe вместо команды Shell. Даже если я удаляю ассоциацию файлов exe и добавляю ассоциацию batfile, это не берет. Может кто-нибудь мне помочь?
2 ответа
Попробуйте изменить расширение файла на .bat
.
Если вы не видите расширений файлов, откройте проводник и перейдите в меню "Вид" -> « Параметры» ... Затем на вкладке « Вид» диалогового окна "Параметры папки" снимите флажок "Скрыть расширения для известных типов файлов".
Затем просто измените расширение с .bat
Ваш тип командного файла всегда принимает как exe вместо командного оператора Shell выглядит немного неясным.
Однако нет никакой разницы или различий в том, как интерпретатор командной строки Windows обрабатывает исполняемые файлы по умолчанию .COM
и .CMD
.
Доказательство: следующий пакетный скрипт анализирует значение по умолчанию переменной среды PathExt
.COM;.EXE;.BAT;.CMD
и отображает соответствующие выходные значения из команд assoc
и ftype
соответственно:
@ECHO OFF
SETLOCAL EnableExtensions
set "parse_ext=%pathext:;=","%"
@for %%G in ("%parse_ext%") do (
@for /F "tokens=1,* delims==" %%H in ('assoc %%G') do (
@for /F "tokens=1,* delims==" %%J in ('ftype %%I') do (
@echo %%H %%I %%K
)
)
)
Выход:
==>D:\bat\SU\969327.bat
.COM comfile "%1" %*
.EXE exefile "%1" %*
.BAT batfile "%1" %*
.CMD cmdfile "%1" %*
Fyi: переменная среды PathExt
возвращает список расширений файлов, которые операционная система считает исполняемыми. При выполнении командной строки, которая не содержит расширения, интерпретатор команд (cmd.exe
) использует значение этой переменной среды, чтобы определить, какие расширения нужно искать и в каком порядке.