Bis jetzt habe ich nie gedacht (und nie beobachtet), dass cmd
und command
zwei verschiedene Dinge sind. Na ja, sind sie?
Schauen Sie sich dieses Bild an:
Eigentlich öffne ich normalerweise cmd
über das Dialogfeld "Ausführen", wenn ich eine Befehlszeile verwenden möchte (für Git / VIM). Also habe ich die Anzeigeposition, Schriftart, Farbe usw. angepasst. Heute habe ich zur Abwechslung command
Run anstatt eingegeben cmd
und festgestellt, dass in meinem Fenster etwas Neues ist. Es hat "DOS" in seinem Fenster.
Es sollte also offensichtlich einen Unterschied zwischen cmd
und geben command
. ich würde gerne wissen
- Der Unterschied zwischen ihnen.
- Warum Microsoft sie getrennt hat (Unix und Linux haben standardmäßig nur eine Shell, Bash).
windows
command-line
shell
ms-dos
Surya
quelle
quelle
command.com
es sich um die ältere 16-Bit-Version handelt (nur bei 32-Bit-Installationen verfügbar). Es existiert nicht auf meiner 64-Bit-Version von Windows 7.Antworten:
TL; DR
Wenn Sie ein 32-Bit-Konsolenprogramm ausführen, wird es von ausgeführt
cmd
. Wenn Sie ein 16-Bit-Konsolenprogramm ausführen, wird es von ausgeführtcommand
.Einzelheiten
Windows XP enthält ein Subsystem zur Unterstützung älterer 16-Bit-Anwendungen.
Alte 16-Bit-Anwendungen sind sowohl als DOS- als auch als Windows-Programme verfügbar. DOS-Programme sind von Natur aus Konsolenanwendungen und werden in der Eingabeaufforderung ausgeführt. 32-Bit-Windows-Konsolenanwendungen sind sich jedoch sehr ähnlich und sehen gleich aus.
Der Befehlsprozessor / Interpreter
cmd
hat mehrere Zwecke:dir
,copy
etc.).bat
Dateien und NT-kompatible.cmd
Dateien)Wenn Sie ein altes 16-Bit-Konsolenprogramm ausführen, wird es von NTVDM (Windows NT Virtual DOS Machine) ausgeführt. Es bietet ein emuliertes DOS-System (daher die virtuelle DOS-Maschine ), das dem Ausführen einer dedizierten Software für virtuelle Maschinen ähnelt, mit der Ausnahme, dass die Emulationsschicht einfacher ist.
command
ist eine 16-Bit-Version des Befehlsinterpreters, die dem tatsächlichen DOS viel näher ist alscmd.exe
das eigentliche Windows-Programm (und im Gegensatzcommand.com
zum DOS-MZ-Header den Windows PE-Header hat).command
hat die gleichen Zwecke wie mit dercmd
Ausnahme, dass es nur 16-Bit-Programme unterstützt. Darüber hinaus unterstützt es keine.cmd
Dateien und verfügt über weniger integrierte Befehle sowie eine eingeschränktere Syntax (escmd
ist ein neuerer, modernerer und fortschrittlicherer Befehlszeileninterpreter, ähnlich wie 4DOS ).Es werden jedoch grafische DOS-Programme (wie alte Spiele) unterstützt. Der Erfolg der Ausführung hängt jedoch von den Grafikkartentreibern und der Art des Programms ab. Es gibt zahlreiche Sites, die verschiedene Tricks anbieten , um DOS-Spiele unter Windows zum Laufen zu bringen (obwohl der Erfolg unter Vista und höher in der Regel geringer ist als unter XP).
Es ist zu beachten, dass 64-Bit-Versionen von Windows die Unterstützung von 16-Bit-Programmen vollständig eingestellt haben und daher überhaupt nicht enthalten sind
command
, sodass weder DOS- noch Windows-16-Bit-Programme ausgeführt werden und stattdessen eine (irreführende) Fehlermeldung ausgegeben werden .Technische Hinweise
command.com
hat eine.com
Erweiterung für die Abwärtskompatibilität mit DOS-Programmen, ist aber wie die meisten anderen Windows-Versionen externer DOS-Befehle intern eine Windows PE-.exe
Datei. Dies liefert die interessante Beobachtung, dass Windows die Erweiterung zwar als Indikator für den Umgang mit den meisten Dateitypen verwendet, diese jedoch ignoriert und ihren Inhalt betrachtet (andernfalls.exe
würde eine nicht funktionieren, wenn sie als behandelt würde.com
). Diese Frage bezieht sich auf diesen Effekt.quelle
Why would you say this? Are non-command line non-TUI DOS apps 'unnatural' in some way?
Art von. In 9x waren sie in Ordnung, aber grafische Apps (z. B. Spiele) funktionieren unter XP + überhaupt nicht mehr ordnungsgemäß, sodass die überwiegende Mehrheit der DOS-Apps, die heutzutage (nativ) unter Windows ausgeführt werden, tatsächlich Befehlszeilentools sind vollwertige, grafische Apps. Auf 64-Bit-Computern werden 16-Bit-Apps überhaupt nicht nativ ausgeführt, aber selbst 32-Bit-Apps sind in der Regel Konsolen-Apps, zumal Vista die Unterstützung für Vollbildkonsolen eingestellt hat .ebenfalls...
Das ist aus diesem informativen Wikipedia-Artikel.
Es wird erwähnt, wie ältere command.com-Befehle in neuere cmd.exe-Funktionen übernommen wurden ... zum Beispiel ...
Also, zögern Sie nicht, nachzulesen.
quelle
command.com
ist die DOS-Shell, die aus Kompatibilitätsgründen bereitgestellt wird.cmd.exe
ist ein natives Win32-Programm, das von OS / 2 geerbt wurde.quelle