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