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 cmdtem 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 (
.batarquivos compatíveis com DOS e .cmdarquivos 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.exeque na verdade é um programa do Windows (e possui o cabeçalho do Windows PE, diferente command.comdo cabeçalho do DOS MZ).
commandtem os mesmos propósitos, cmdexceto que ele suporta apenas programas de 16 bits. Além disso, ele não suporta .cmdarquivos 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 commandnada; 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.compossui uma .comextensã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 .exearquivo 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.