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ührt command
.
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:
- So führen Sie ein 32-Bit-Text-Windows-Konsolenprogramm aus
- Zur Bereitstellung und verschiedene Kommandozeilenfunktionen (Griff
dir
, copy
etc.)
- Batch-Dateien interpretieren und ausführen (DOS-kompatible
.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 als cmd.exe
das eigentliche Windows-Programm (und im Gegensatz command.com
zum DOS-MZ-Header den Windows PE-Header hat).
command
hat die gleichen Zwecke wie mit der cmd
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 (es cmd
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.
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.