Qual è la differenza tra CMD e prompt dei comandi in Windows?


30

Fino ad ora, non ho mai pensato (e mai osservato) cmde commandsono due cose diverse. Bene, lo sono?

Dai un'occhiata a questa foto:

inserisci qui la descrizione dell'immagine

In realtà, di solito apro cmddalla finestra di dialogo Esegui ogni volta che voglio riga di comando (per Git / VIM). Quindi, ho personalizzato la posizione di visualizzazione, il carattere, il colore, ecc. Oggi, per cambiare, ho digitato commandEsegui invece di cmde ho scoperto che c'era qualcosa di nuovo nella mia finestra. Ha "DOS" nella sua finestra.

Quindi, ovviamente, ci dovrebbe essere differenza tra cmde command. Mi piacerebbe sapere

  1. La differenza tra loro.
  2. Perché Microsoft li ha separati (Unix e Linux ha una sola shell di default, Bash).

11
Suppongo che command.comsia la versione legacy a 16 bit (disponibile solo su installazioni a 32 bit). Non esiste sulla mia versione a 64 bit di Windows 7.
Der Hochstapler,

11
UNIX e Linux hanno più di una sola shell disponibile. La shell predefinita è in genere Bash.
ephsmith il

@smsmith è quello che ho detto ..
Surya,

Si noti che la frase "prompt dei comandi" potrebbe tecnicamente essere utilizzata per fare riferimento a command.exe o cmd.exe, ma in pratica viene quasi sempre utilizzata per indicare cmd.exe.
Harry Johnston,

Unix ha un totale di quattro shell che sono csh, ksh, bash, zsh.
Deb

Risposte:


31

TL; DR

Quando si esegue un programma console a 32 bit, viene eseguito da cmd; quando si esegue un programma console a 16 bit, viene eseguito da command.

Dettagli

Windows XP include un sottosistema per supportare le applicazioni a 16 bit meno recenti.

Le vecchie applicazioni a 16 bit sono disponibili come programmi DOS e Windows. I programmi DOS per loro natura sono applicazioni console ed eseguiti in quello che sembra il prompt dei comandi. Tuttavia, le applicazioni della console di Windows a 32 bit sono molto simili e hanno lo stesso aspetto.

L'elaboratore / interprete dei comandi cmdha diversi scopi:

  • Per eseguire il programma di console di Windows di testo a 32 bit
  • Per fornire e gestire le varie funzioni della riga di comando ( dir, copyecc)
  • Interpretazione ed esecuzione di file batch ( .batfile compatibili DOS e .cmdfile compatibili NT )

Quando si esegue un vecchio programma console a 16 bit, viene eseguito da NTVDM (macchina virtuale virtuale Windows NT). Fornisce un sistema DOS emulato (da cui la macchina DOS virtuale ) che è simile all'esecuzione di un software di macchina virtuale dedicato, tranne per il fatto che il livello di emulazione è più semplice. commandè una versione a 16 bit dell'interprete dei comandi che è molto più vicina al DOS effettivo di quello cmd.exeche in realtà è un programma Windows (e ha l'intestazione Windows PE, a differenza di quella command.comcon l'intestazione MZ DOS).

commandha gli stessi scopi cmdtranne per il fatto che supporta solo programmi a 16 bit. Inoltre, non supporta i .cmdfile e ha meno comandi integrati ed è più limitato nella sua sintassi ( cmdè un interprete della riga di comando più nuovo, più moderno, più avanzato, simile a 4DOS ).

Tuttavia, supporta programmi DOS grafici (come i vecchi giochi), ma il successo della loro esecuzione dipende dai driver della scheda video e dalla natura del programma. Esistono numerosi siti che offrono vari trucchi per far funzionare i giochi DOS su Windows (sebbene il successo su Vista e su di solito sia più limitato che su XP).

Va notato che le versioni a 64 bit di Windows hanno completamente eliminato il supporto dei programmi a 16 bit e quindi non includono commandaffatto, quindi non verranno eseguiti né i programmi DOS né Windows a 16 bit e verrà invece visualizzato un messaggio di errore (fuorviante) .


Note tecniche

command.comha .comun'estensione per la retrocompatibilità con i programmi DOS, ma come la maggior parte delle altre versioni Windows di comandi DOS esterni, internamente è in realtà un .exefile Windows PE . Ciò fornisce l'interessante osservazione che mentre Windows utilizza l'estensione come indicatore di come gestire la maggior parte dei tipi di file, per quelli eseguibili, ignora l'estensione e ne esamina il contenuto (altrimenti .exenon funzionerebbe se trattata come .com). Questa domanda riguarda questo effetto.


Ovviamente puoi eseguire un programma console a 32 bit da cmd.exe, ma non è necessario. Se si fa doppio clic su un file eseguibile in modalità console, non verrà eseguito "inside" cmd.exe. Allo stesso modo, command.exe non è proprio la stessa cosa di NTVDM.
Harry Johnston,

1
Odio iniziare una frase con un nome-comando.
Synetech,

> command.exe non è proprio la stessa cosa del NTVDM No, ma ne fa parte , insieme a diverse DLL (l'ho imparato a mie spese mentre cercavo di far funzionare le app console a 16 bit su un sistema XP ).
Synetech,

"I programmi DOS per loro natura sono applicazioni console " - Perché dovresti dirlo? Le app DOS non TUI da riga di comando non sono in qualche modo "innaturali"? :)
Karan,

Why would you say this? Are non-command line non-TUI DOS apps 'unnatural' in some way? Una specie di. In 9x andavano bene, ma le app grafiche (ad esempio i giochi) non funzionano più correttamente se non in XP +, quindi la stragrande maggioranza delle app DOS che vengono eseguite su Windows (nativamente) in questi giorni sono effettivamente strumenti da riga di comando invece di applicazioni grafiche complete. Su macchine a 64 bit, le app a 16 bit non funzionano affatto in modo nativo, ma anche le app a 32 bit sono in genere app console, soprattutto da quando Vista ha abbandonato il supporto per le console a schermo intero .
Synetech,

8

A differenza di COMMAND.COM, che è un programma DOS, cmd.exe è un'applicazione Windows nativa normalmente in esecuzione nella console Win32. Ciò consente di sfruttare le funzionalità disponibili per i programmi nativi sulla piattaforma che non sarebbero altrimenti disponibili per i programmi DOS.

anche...

Entrambe le versioni OS / 2 e Windows NT di cmd.exe presentano messaggi di errore più dettagliati rispetto alla coperta "Comando o nome file errato" (nel caso di comandi non validi) di command.com.

È da questo articolo informativo di Wikipedia.

Viene menzionato il modo in cui i comandi command.com precedenti sono stati inseriti nella nuova funzionalità cmd.exe ... ad esempio ...

la funzionalità di deltree (command.com) è stata inserita in rd (cmd.exe) sotto forma del parametro / s

Quindi, sentiti libero di leggere.


5

command.com è la shell DOS, fornita per compatibilità.

cmd.exe è un programma nativo Win32, ereditato da OS / 2.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.