914 Stimmen

Windows-Batch-Dateien: .bat vs. .cmd?

So wie ich es verstehe, .bat ist die alte 16-Bit-Benennungskonvention, und .cmd ist für 32-Bit-Windows, d. h. ab NT. Aber ich sehe weiterhin überall .bat-Dateien, und sie scheinen mit beiden Suffixen genau gleich zu funktionieren. Wenn ich davon ausgehe, dass mein Code nie auf etwas Älterem als NT laufen muss, spielt es dann wirklich eine Rolle, wie ich meine Batch-Dateien benenne, oder gibt es eine Ich hab's kapiert erwarten, dass ich das falsche Suffix verwende?

21voto

tvCa Punkte 764

Unter Windows 7 haben BAT-Dateien jedoch auch diesen Unterschied: Wenn Sie die Dateien TEST.BAT und TEST.CMD im selben Verzeichnis erstellen und TEST in diesem Verzeichnis ausführen, wird die BAT-Datei ausgeführt.

C:\>echo %PATHEXT%
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

C:\Temp>echo echo bat > test.bat

C:\Temp>echo echo cmd > test.cmd

C:\Temp>test

C:\Temp>echo bat
bat

C:\Temp>

13voto

Da sich der ursprüngliche Beitrag auf die Folgen der Verwendung von .bat oder .cmd bezog Suffix , nicht unbedingt die Befehle innerhalb die Datei...

Ein weiterer Unterschied zwischen .bat und .cmd besteht darin, dass, wenn zwei Dateien mit demselben Dateinamen und diesen beiden Erweiterungen existieren, dann:

  • Eingabe von Dateiname ou Dateiname .bat in der Befehlszeile wird die .bat-Datei ausgeführt

  • Um die .cmd-Datei auszuführen, müssen Sie Folgendes eingeben Dateiname .cmd

9voto

Lorenzo Boccaccia Punkte 5854

Alles, was in einem Batch funktioniert, sollte auch in einem cmd funktionieren; cmd bietet einige Erweiterungen zur Steuerung der Umgebung. Außerdem wird cmd von einem neuen cmd-Interpreter ausgeführt und sollte daher schneller (bei kurzen Dateien nicht spürbar) und stabiler sein, da bat unter der emulierten 16-Bit-Umgebung von NTVDM läuft.

3voto

Patrick Cuff Punkte 27220

Ich glaube, wenn Sie den Wert der Umgebungsvariablen ComSpec auf %SystemRoot%system32\cmd.exe (CMD), dann spielt es keine Rolle, ob die Dateierweiterung .BAT ou .CMD . Ich bin mir nicht sicher, aber vielleicht ist dies sogar die Standardeinstellung für WinXP und höher.

3voto

zask Punkte 191

Die Ausführung von .cmd- und .bat-Dateien unterscheidet sich, weil sich die Errorlevel-Variable in einer .cmd-Datei bei einem Befehl ändern kann, der von den Befehlserweiterungen beeinflusst wird. Das war's eigentlich schon.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X