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


30

Até agora, eu nunca pensei (e nunca observei) isso cmde commandsão duas coisas diferentes. Bem, são eles?

Dê uma olhada nesta foto:

insira a descrição da imagem aqui

Na verdade, eu geralmente abro a cmdpartir da caixa de diálogo Executar sempre que quero a linha de comando (para Git / VIM). Então, eu personalizei a posição de exibição, fonte, cor, etc. Hoje, eu, para variar, digitei commandExecutar em vez de cmde descobri que havia algo novo na minha janela. Possui "DOS" em sua janela.

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

  1. A diferença entre eles.
  2. Por que a Microsoft os separou (Unix e Linux tem apenas um shell por padrão, Bash).

11
Eu diria que 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.
Der Hochstapler

11
O UNIX e o Linux têm mais do que apenas um shell disponível. O shell padrão é tipicamente Bash.
ephsmith

@ephsmith é isso que eu disse ..
Surya

Observe que tecnicamente a frase "prompt de comando" pode ser usada para se referir ao command.exe ou ao cmd.exe, mas na prática quase sempre é usada para significar cmd.exe.
Harry Johnston

O Unix possui um total de quatro shell: csh, ksh, bash, zsh.
Deb

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 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.


Embora você possa, obviamente, executar um programa de console de 32 bits a partir do cmd.exe, não é necessário. Se você clicar duas vezes em um arquivo executável no modo de console, ele não será executado "dentro" do cmd.exe. Da mesma forma, command.exe não é realmente a mesma coisa que o NTVDM.
Harry Johnston

1
Eu odeio começar uma frase com um nome de comando.
Synetech

> command.exe não é a mesma coisa que o NTVDM Não, mas faz parte dele, junto com várias DLLs (aprendi isso da maneira mais difícil ao tentar fazer com que aplicativos de console de 16 bits funcionassem em um sistema XP )
Synetech

"Os programas DOS, por natureza, são aplicativos de console " - Por que você diz isso? Os aplicativos não DOS da linha de comando que não são da TUI são 'antinaturais' de alguma forma? :)
Karan

Why would you say this? Are non-command line non-TUI DOS apps 'unnatural' in some way? Tipo de. No 9x, eles estavam bem, mas os aplicativos gráficos (por exemplo, jogos) não funcionam mais corretamente no XP +, então a grande maioria dos aplicativos DOS que são executados no Windows (nativamente) atualmente são de fato ferramentas de linha de comando em vez de aplicativos gráficos completos. Em máquinas de 64 bits, os aplicativos de 16 bits não são executados de forma nativa, mas mesmo os aplicativos de 32 bits são geralmente aplicativos de console, especialmente porque o Vista abandonou o suporte para consoles de tela cheia .
Synetech

8

Ao contrário do COMMAND.COM, que é um programa do DOS, o cmd.exe é um aplicativo nativo do Windows, geralmente executando no console do Win32. Isso permite tirar proveito dos recursos disponíveis para programas nativos na plataforma que, de outra forma, não estão disponíveis para os programas do DOS.

Além disso...

As versões do OS / 2 e Windows NT do cmd.exe têm mensagens de erro mais detalhadas que o cobertor "Comando incorreto ou nome do arquivo" (no caso de comandos malformados) do command.com.

Isso é deste artigo informativo da Wikipedia.

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

a funcionalidade do deltree (command.com) foi convertida em rd (cmd.exe) na forma do parâmetro / s

Portanto, fique à vontade para ler.


5

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

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.