Seu O tipo de arquivo em lote está sempre assumindo que o comando exe ao invés de comando Shell parece ser um pouco incerto.
No entanto, não há diferença ou discriminação na maneira como o interpretador de linha de comando do Windows trata os executáveis .COM , .EXE , .BAT e .CMD .
Proof : o script de lote seguinte analisa o valor padrão de PathExt variável de ambiente .COM;.EXE;.BAT;.CMD e exibe os valores de saída apropriados dos comandos assoc e ftype , respectivamente:
@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
)
)
)
Saída:
==>D:\bat\SU9327.bat
.COM comfile "%1" %*
.EXE exefile "%1" %*
.BAT batfile "%1" %*
.CMD cmdfile "%1" %*
Fyi: variável de ambiente PathExt retorna uma lista das extensões de arquivo que o sistema operacional considera executável . Ao executar uma linha de comando que não contém uma extensão, o interpretador de comandos ( cmd.exe ) usa o valor dessa variável de ambiente para determinar quais extensões procurar e em que ordem.