Unterschiede zwischen Windows Batch .bat- und .cmd-Dateien
-
Unterschiede zwischen
COMMAND.COM
undcmd.exe
-
Hauptunterschiede zwischen Windows Batch
.bat
- und.cmd
-Dateien - Fazit
Benutzer betrachten COMMAND.COM
und cmd.exe
oft als gleich. Außerdem sind sie verwirrt darüber, welche Erweiterung sie für die Batch-Dateien verwenden sollen, .bat
oder .cmd
.
Sind sie gleich oder unterschiedlich und spielt es eine Rolle, welche Erweiterungen verwendet werden sollen? Die Antwort auf all diese Fragen wird in diesem Artikel diskutiert.
Wenn wir Batch-Dateien ausführen, werden sie in der Eingabeaufforderung ausgeführt. Die Batch-Dateien werden in Versionen von Windows NT meistens in cmd.exe
ausgeführt.
In älteren Versionen läuft es in der Shell COMMAND.COM
.
Unterschiede zwischen COMMAND.COM
und cmd.exe
COMMAND.COM
und cmd.exe
sind Versionen des Befehlsinterpreters für MS-DOS und Windows. COMMAND.COM
ist eine Befehlszeilen-Shell, die entwickelt wurde, um 16-Bit-Programme auszuführen; Es ist ein DOS-Programm, das nach dem Booten als erstes ausgeführt wird und das System durch Ausführen der Konfigurationsdatei AUTOEXEC.BAT
einrichtet.
Es wurde ursprünglich 1980 für MS-DOS, Windows 95-98 und Windows ME veröffentlicht. Es ist nur kompatibel und nützlich für ältere Programme, die als 16-Bit-Programme ausgeführt werden sollen, und wurde seitdem nicht aktualisiert.
Die cmd.exe
hingegen ist ein Nachfolger von COMMAND.COM
. Es wurde für 32-Bit-Programme entwickelt und wurde 1987 für OS/2, Windows NT und Windows CE veröffentlicht.
Im Vergleich zu COMMAND.COM
bietet cmd.exe
bessere Erweiterungen wie detaillierte Fehlermeldungen, unterstützt Pfeiltasten zum Überprüfen der Befehlshistorie, unterstützt verzögerte Variablenerweiterung und verfügt über verbesserte interne Befehle.
Eine Batch-Datei ist eine Skriptdatei, die Befehle speichern und vom Befehlszeileninterpreter in serieller Reihenfolge ausführen kann. Die Dateinamenerweiterung .bat
wird in MS-DOS und Windows verwendet und war die erste Erweiterung, die für die Batch-Dateien verwendet wurde, während .cmd
in der Windows NT-Familie und OS/2 verwendet wird.
.cmd
-Dateien können nur in cmd.exe
ausgeführt werden, da die COMMAND.COM
diese Erweiterung nicht kennt.
Dieses Tutorial veranschaulicht die wichtigsten Unterschiede zwischen .bat
- und .cmd
-Dateien.
Hauptunterschiede zwischen Windows Batch .bat
- und .cmd
-Dateien
Die wesentlichen Hauptunterschiede zwischen .bat
und .cmd
werden im Folgenden besprochen.
ERRORLEVEL-Behandlung
Die Variablen .bat
und .cmd
behandeln die ERRORLEVEL-Variable unterschiedlich. Beim Aufruf eines ERRORLEVEL
ändert .bat
seinen Zustand nur, wenn ein echter Fehler auftritt, d.h. bei Befehlen wie append
, dpath
, ftype
, set
, path
, assoc
, .bat
setzt den ERRORLEVEL nicht.
Aber im Fall von .cmd
wird der ERRORLEVEL unabhängig von einem echten Fehler gesetzt. Es setzt den ERRORLEVEL auch nach erfolgreicher Ausführung auf 0 zurück.
Manchmal führt dies beim Schreiben eines Skripts zu Verwirrung, daher sollten Benutzer darauf achten.
Ausführungsordnung
Eine Umgebungsvariable PATHEXT
steuert die Ausführungsreihenfolge. Die Ausführung hängt von der Reihenfolge der in der Variablen PATHEXT
gespeicherten Variablen ab.
Wenn sowohl .bat
- als auch .cmd
-Skripte im selben Ordner gespeichert sind, wird beim Ausführen des Skripts ohne Erweiterung zuerst die .bat
-Datei ausgeführt, gefolgt von der .cmd
-Datei. Die Standardreihenfolge der PATHEXT
-Variable ist wie folgt:
ECHO %PATHEXT%
Sie können jedoch die Reihenfolge der Erweiterungen in der Variablen PATHEXT
ändern. Auch wenn Sie die Variable PATHEXT
löschen, bleibt die Reihenfolge dieselbe wie in der MS-DOS-Version von Windows.
Die Unterstützung
In Bezug auf die Unterstützung von Windows-Versionen werden .cmd
-Dateien in fast allen Windows-Versionen unterstützt, die nicht mit .bat
-Dateien identisch sind. .bat
wurde ursprünglich für MS-DOS entwickelt, während .cmd
für Windows NT entwickelt wurde, sodass .cmd
-Dateien nicht in Nicht-Windows NT-Systemen ausgeführt werden können.
Das Scripting für .bat
ist im Vergleich zu .cmd
älter. Und .cmd
ist abwärtskompatibel im Vergleich zu .bat
-Dateien.
Sicherheit
Bezüglich Sicherheit ist .cmd
sicherer als .bat
. Da Befehle in einer .bat
-Datei seriell gespeichert werden und Befehle Zeile für Zeile ausgeführt werden, ist sie anfälliger für Sicherheitsangriffe. .cmd
-Dateien führen Befehle nicht sequentiell aus, was sie sicherer macht als .bat
-Dateien.
.cmd
-Dateien können auch in Android über eine Anwendung verwendet werden, die das Anzeigen, Installieren und Ausführen von .cmd
-Dateien ermöglicht. .bat
-Dateien werden in Android nicht unterstützt.
Sprache
.bat
-Dateien haben eine ältere Version der Microsoft-Sprache, da sie früher für MS-DOS entwickelt wurde. .cmd
ist eine Programmiersprache und ein Interpreter, die für die neueren Versionen von Windows entwickelt wurden.
Wenn Sie eine Batch-Datei ohne Erweiterung ausführen, wird sie als .bat
ausgeführt, während Sie für die Dateierweiterung .cmd
den Dateinamen als Dateiname.cmd
eingeben müssen. Dieser Fall trifft nur zu, wenn beide Erweiterungen denselben Dateinamen haben; .cmd
muss Erweiterungen bereitstellen, um die Dateien auszuführen, während .bat
-Dateien das Programm direkt ausführen, ohne dass Erweiterungen erforderlich sind.
Wie im Bild unten gezeigt, haben wir zwei Batch-Dateien mit demselben Dateinamen testfile
und unterschiedlichen Erweiterungen .bat
und .cmd
. Die Datei .bat
wird als Windows Batch File und .cmd
als Windows Command Script gespeichert.
Ausführen der .bat
-Datei:
Ausführen der .cmd
-Datei:
Arbeitsumfeld
Die .bat
-Dateien wurden entwickelt, um in einer NTVDM-Umgebung ausgeführt zu werden, einem Windows-Prozess zum Ausführen von 16-Bit-Programmen auf 32-Bit-Windows. NTVDM steht für Windows NT Virtual DOS Machine, ausgeführt als ntvdm.exe
.
Es ist ein wichtiges Programm für das System, das für den stabilen Betrieb von Programmen nicht entfernt werden sollte. Die .bat
-Dateien laufen in dieser Umgebung und werden daher in allen Umgebungen unterstützt, während .cmd
-Dateien in 16-Bit-Umgebungen nicht ausgeführt werden können.
Außerdem werden .cmd
-Dateien vor der Ausführung im Speicher abgelegt, während die .bat
-Dateien Befehle Zeile für Zeile ausführen, ohne sie im Speicher zu speichern.
Dolmetscher
Batch-Dateien mit der Dateierweiterung .bat
können sowohl unter COMMAND.COM
als auch unter cmd.exe
ausgeführt werden, obwohl beide Interpreter die Datei unterschiedlich ausführen. Die .cmd
-Dateien laufen nur in cmd.exe
.
Die Umgebungsvariable COMSPEC
wird verwendet, um den Befehlszeileninterpreter für Batch-Dateien zu starten. Standardmäßig ist es für ältere Versionen wie MS-DOS auf COMMAND.COM
eingestellt.
Ab Windows NT ist es standardmäßig cmd.exe
. Führen Sie den folgenden Befehl aus, um seinen Inhalt anzuzeigen:
ECHO %COMSPEC%
Neuere Versionen von Windows werden also in cmd.exe
ausgeführt. Aber in älteren Versionen werden nur .bat
-Dateien ausgeführt.
Fazit
Wir haben also die wesentlichen Hauptunterschiede zwischen den Batch-Dateierweiterungen .bat
und .cmd
besprochen. Beide haben ihre Vorteile gegenüber einander.
Alles, was in einer .bat
-Datei funktioniert, sollte auch in einer .cmd
-Datei funktionieren. Die .cmd
-Dateien sind schneller und stabiler als .bat
-Dateien.
Die Verwendung der richtigen Erweiterung hängt von Ihren Anforderungen ab. Es wird jedoch empfohlen, für neuere Versionen die Dateierweiterung .cmd
zu verwenden.