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 suportar aplicativos antigos de 16 bits.
Aplicativos antigos de 16 bits estão disponíveis como programas DOS e Windows. Os programas do DOS, por sua natureza, são aplicativos de console e executados no 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 / interpretador de comandos cmd tem várias finalidades:
- Para executar o programa de console do Windows de texto de 32 bits
- Para fornecer e manipular várias funções de linha de comando (
dir,copy, etc.) - Interpretar e executar arquivos em lote (arquivos compatíveis com
.batdo DOS e arquivos compatíveis com.cmddo NT)
Quando você executa um programa de console antigo de 16 bits, ele é executado pelo NTVDM (Máquina Virtual DOS do Windows NT). Ele fornece um sistema DOS emulado (por isso a máquina DOS virtual ), que é semelhante à execução de um software dedicado de máquina virtual, 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 que de cmd.exe , que na verdade é um programa do Windows (e tem o cabeçalho do Windows PE, diferente de command.com que tem o cabeçalho DOS MZ) .
command tem as mesmas finalidades que cmd , exceto pelo fato de suportar apenas programas de 16 bits. Além disso, ele não suporta .cmd arquivos e possui menos comandos integrados e é mais limitado em sua sintaxe ( cmd é um interpretador de linha de comando mais recente, mais moderno e mais avançado, semelhante a 4DOS ).
No entanto, ele suporta programas DOS em gráficos (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 DOS sejam executados no Windows (embora o sucesso no Vista e no Windows XP seja geralmente mais limitado do que em XP).
Deve-se observar que as versões de 64 bits do Windows descontinuaram completamente o suporte a programas de 16 bits e, portanto, não incluem command , portanto nem os programas DOS nem Windows de 16 bits serão executados; uma (enganosa) mensagem de erro .
Notas técnicas
command.com tem uma extensão .com para compatibilidade com programas DOS, mas como a maioria das outras versões do Windows de comandos DOS externos, internamente, na verdade é um arquivo% PE .exe . 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 arquivo, para os executáveis, ele ignora a extensão e examina seu conteúdo (caso contrário, um .exe não funcionaria se tratado como% código%). Esta questão se refere a esse efeito.
