Unterschiede zwischen Windows Batch .bat- und .cmd-Dateien

Siddharth Bishnoi 30 Januar 2023
  1. Unterschiede zwischen COMMAND.COM und cmd.exe
  2. Hauptunterschiede zwischen Windows Batch .bat- und .cmd-Dateien
  3. Fazit
Unterschiede zwischen Windows Batch .bat- und .cmd-Dateien

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.

befehl.com

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.

cmd.exe

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%

Pathext-Variable

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.

Batch-Dateien mit demselben Dateinamen

Ausführen der .bat-Datei:

bat-Datei ausgeführt

Ausführen der .cmd-Datei:

cmd-Datei ausgeführt

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%

compspec-Variable

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.

Verwandter Artikel - Batch CMD