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.