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 cmdhat mehrere Zwecke:
- So führen Sie ein 32-Bit-Text-Windows-Konsolenprogramm aus
- Zur Bereitstellung und verschiedene Kommandozeilenfunktionen (Griff
dir, copyetc.)
- Batch-Dateien interpretieren und ausführen (DOS-kompatible
.batDateien und NT-kompatible .cmdDateien)
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. commandist eine 16-Bit-Version des Befehlsinterpreters, die dem tatsächlichen DOS viel näher ist als cmd.exedas eigentliche Windows-Programm (und im Gegensatz command.comzum DOS-MZ-Header den Windows PE-Header hat).
commandhat die gleichen Zwecke wie mit der cmdAusnahme, dass es nur 16-Bit-Programme unterstützt. Darüber hinaus unterstützt es keine .cmdDateien und verfügt über weniger integrierte Befehle sowie eine eingeschränktere Syntax (es cmdist 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.comhat eine .comErweiterung für die Abwärtskompatibilität mit DOS-Programmen, ist aber wie die meisten anderen Windows-Versionen externer DOS-Befehle intern eine Windows PE- .exeDatei. 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 .exewürde eine nicht funktionieren, wenn sie als behandelt würde .com). Diese Frage bezieht sich auf diesen Effekt.
command.comes 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.