TL; DR
Quando você executa um programa de console de 32 bits, ele é executado por cmd
; Quando você executa um programa de console de 16 bits, ele é executado por command
.
Detalhes
O Windows XP inclui um subsistema para oferecer suporte a aplicativos mais antigos de 16 bits.
Aplicativos antigos de 16 bits estão disponíveis nos programas DOS e Windows. Os programas DOS, por natureza, são aplicativos de console e executam o que parece ser o prompt de comando. No entanto, os aplicativos de console do Windows de 32 bits são muito semelhantes e têm a mesma aparência.
O processador / intérprete de comando cmd
tem vários propósitos:
- Para executar o programa de console do Windows com texto de 32 bits
- Para fornecer e manusear as várias funções de linha de comando (
dir
, copy
, etc.)
- Interpretar e executar arquivos em lote (
.bat
arquivos compatíveis com DOS e .cmd
arquivos compatíveis com NT )
Quando você executa um programa de console antigo de 16 bits, ele é executado pelo NTVDM (Windows DOS Virtual DOS Machine). Ele fornece um sistema DOS emulado (daí a máquina DOS virtual ) que é semelhante à execução de um software de máquina virtual dedicado, exceto que a camada de emulação é mais simples. command
é uma versão de 16 bits do interpretador de comandos muito mais próxima do DOS real do cmd.exe
que na verdade é um programa do Windows (e possui o cabeçalho do Windows PE, diferente command.com
do cabeçalho do DOS MZ).
command
tem os mesmos propósitos, cmd
exceto que ele suporta apenas programas de 16 bits. Além disso, ele não suporta .cmd
arquivos e possui menos comandos internos e é mais limitado em sua sintaxe ( cmd
é um interpretador de linha de comando mais novo, mais moderno e mais avançado, semelhante ao 4DOS ).
No entanto, ele suporta programas gráficos do DOS (como jogos antigos), mas o sucesso de executá-los depende dos drivers da placa de vídeo e da natureza do programa. Existem inúmeros sites que oferecem vários truques para que os jogos do DOS sejam executados no Windows (embora o sucesso no Vista e superior seja geralmente mais limitado que no XP).
Deve-se notar que as versões de 64 bits do Windows abandonaram completamente o suporte a programas de 16 bits e, portanto, não incluem command
nada; portanto, nem os programas DOS nem os de 16 bits do Windows serão executados e, em vez disso, lançarão uma mensagem de erro (enganosa) .
Notas técnicas
command.com
possui uma .com
extensão para compatibilidade retroativa com programas DOS, mas, como a maioria das outras versões do Windows de comandos externos do DOS, internamente, na verdade, é um .exe
arquivo do Windows PE . Isso fornece a observação interessante de que, embora o Windows use a extensão como um indicador de como lidar com a maioria dos tipos de arquivos, nos executáveis, ele ignora a extensão e analisa seu conteúdo (caso contrário .exe
, não funcionaria se tratado como um .com
). Esta questão está relacionada a esse efeito.
command.com
é a versão herdada de 16 bits (disponível apenas em instalações de 32 bits). Ela não existe na minha versão de 64 bits do Windows 7.