Qual é a diferença entre o CMD e o prompt de comando no Windows?

29

Até agora, nunca pensei (e nunca observei) que cmd e command são duas coisas diferentes. Bem, eles estão?

Veja esta foto:

Naverdade,eunormalmenteabrocmddacaixadediálogoExecutarsemprequeeuquerousaralinhadecomando(paraGit/VIM).Então,eupersonalizeiaposiçãodeexibição,fonte,cor,etc.Hoje,eu,paravariar,digiteicommandemExecutaremvezdecmdedescobriqueháalgonovonaminhajanela.Tem"DOS" na sua janela.

Então, obviamente, deve haver diferença entre cmd e command . Eu gostaria de saber

  1. A diferença entre eles.
  2. Por que a Microsoft os separou (o Unix & Linux tem apenas um shell por padrão, Bash).
por Surya 21.07.2012 / 15:29

3 respostas

31

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.

    
por 21.07.2012 / 16:45
8

Unlike COMMAND.COM, which is a DOS program, cmd.exe is a native Windows application usually running in Win32 console. This allows it to take advantage of features available to native programs on the platform that are otherwise unavailable to DOS programs.

também ...

Both the OS/2 and the Windows NT versions of cmd.exe have more detailed error messages than the blanket "Bad command or file name" (in the case of malformed commands) of command.com.

Isso é de artigo informativo da Wikipédia.

Há menção de como comandos command.com mais antigos foram implementados na funcionalidade cmd.exe mais recente ... por exemplo ...

the functionality of deltree (command.com) was rolled into rd (cmd.exe) in the form of the /s parameter

Então, sinta-se à vontade para ler.

    
por 21.07.2012 / 15:35
5

command.com é o shell DOS, fornecido para compatibilidade.

cmd.exe é um programa nativo do Win32, herdado do OS / 2.

    
por 21.07.2012 / 15:54