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
.bat
do DOS e arquivos compatíveis com.cmd
do 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.