Diese Liste ist nicht vollständig, weitere Befehle werden in den anderen Kapiteln dieses Buches erklärt. Mit der Zeit sollen alle Befehle in diese Liste übertragen werden, um aus den anderen Kapitel referenziert werden zu können.
Vorsicht Leerzeichen![Bearbeiten]
Fehlplatzierte oder fehlende Leerzeichen können beim Programmieren einer Batch-Datei zu Fehlern führen. Bei den nachfolgenden Beispielen ist also auf die Platzierung von Leerzeichen und auf entsprechende Bemerkungen genau zu achten. Scheinbar grundlose Abbrüche beim Ausführen einer Batch-Datei können ebenfalls fehlplatzierten oder fehlenden Leerzeichen geschuldet sein.
Schaltet die Ausgabe der Befehlszeile auf dem Bildschirm nur für den aktuellen Befehl aus und ist selbst kein eigener Befehl.
Syntax
@echo off if 1==1 ( :: Kommentar 1 :: Kommentar 2 echo OK ) 8
Stapelanweisung: Ab MS-DOS bis Windows 7
Beispiel:
Inhalt
echo Diese Zeile wird mit Befehlszeile ausgeführt... @echo und diese ohne!Ausgabe
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne!In Batch Files verhindert "@echo off" zu Beginn des Skriptes die Ausgabe aller (!) Befehlszeilen auf dem Bildschirm bis die Stapelverarbeitung beendet wird, abbricht oder mittendrin ein "@echo on" Befehl erfolgt, um z. B. Befehlszeilen tatsächlich anzuzeigen und dann auszuführen. Kommentare (mit :: oder REM) werden dadurch natürlich auch nicht mehr ausgegeben, was nur als Nebeneffekt ausfällt.
@echo off :: Verhindert, dass dieser Kommentar angezeigt wird.Ohne @echo off:
C:\>:: Dieser Kommentar wird so angezeigtSyntax:
@echo off if 1==1 ( :: Kommentar 1 :: Kommentar 2 echo OK ) 9Web-Links:
Erklärung:
Zur verzögerten Übersetzung von Variablen. Bewirkt, dass die Variable nicht zur Kompilierzeit sondern erst zur Laufzeit übersetzt wird (setzt die Verwendung von SETLOCAL zur Aktivierung von verzögerter Übersetzung voraus)
Verwendung:
Beispielsweise zur besser differenzierten Ausführung von For-Schleifen siehe LINK
Beispiele:
Inhalt der Batchdatei
Setlocal EnableDelayedExpansion Set _var=first Set _var=second& Echo %_var% !_var!Ausgabe (unter XP)
first secondErklärung:
Sprungmarke für ein Unterprogramm bzw. eine Kommentarzeile.
Sprungmarken werden benötigt, wenn mittels der Batchdatei eine Bedingung überprüft und erfüllt bzw nicht erfüllt wird und entsprechend weiter verfahren werden soll.
Mit dem Batchbefehl C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt...
Diese Zeile wird mit Befehlszeile ausgeführt...
und diese ohne!
00 wird die Sprungmarke angesprungen.
Anmerkung:
Der Doppelpunkt hat auch die Funktion der Manipulation von Variablen, wenn er direkt hinter einer Variablen steht. Siehe Kapitel "Variablen" in dieser Publikation.
Syntax
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 01
Sprungmarken können eine beliebige Länge haben, unter MS-DOS und älteren Windows-Versionen werden allerdings nur die ersten 8 Zeichen beachtet, der Rest wird ignoriert. Kommen in einer Batch also C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 02 und C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 03 vor, so wird unter Umständen nur die erste beim Aufruf einer der Beiden gefunden. Also besser C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 04 oder C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 05 schreiben. Groß- und Kleinschreibung wird nicht unterschieden. Man kann jedoch mithilfe von Anführungszeichen dafür sorgen, dass der komplette Sprungname beachtet wird (Beispielsweise :"Sprungname"). Wenn man den kompletten Code mit Sprungmarken verbindet, kann man zur besseren Unterscheidung verschiedener Sprungmarken eine Leerzeile verwenden.
Beispiel:
Inhalt
if exist C:\blabla.txt goto EDITBLA goto END :: Kommentarzeile, sofern es erforderlich ist, einen Kommentar zu schreiben :: Zur Unterscheidung von Sprungmarken verwende ich zwei "::" :EDITBLA edit c:\blabla.txt :ENDSofern die Datei C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 06 existiert, wird sie mit C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 07 geöffnet, sonst wird das Unterprogramm übersprungen und die Batchdatei bei der Marke C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 08 fortgesetzt, also beendet.
Seit die Befehlserweiterungen aktiviert sind, steht in Batchdateien die Sprungmarke C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 09 zur Verfügung, welche sich unsichtbar am Ende der Batch-Datei befindet.
:: (doppelter Doppelpunkt)[Bearbeiten]
Syntax
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 10
Erklärung:
Der C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 11 kann zur Einleitung eines "Kommentars" verwendet werden, ist aber eigentlich ein Spezialfall der Verwendung vom Doppelpunkt (Label). Eine ausführliche Erklärung zu Kommentaren findet sich beim Befehl REM. Die Verwendung des doppelten Doppelpunkts funktioniert innerhalb von Abfragen und Schleifen nicht - der REM-Befehl hingegen schon. Es ist daher besser, den doppelten Doppelpunkt überhaupt nicht zu verwenden und REM zu bevorzugen.
Beispiel:
Inhalt der Batchdatei
::echo Ich bin ein Kommentar echo Ich bin ein BefehlAusgabe der Batchdatei
Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\>echo Ich bin ein Befehl Ich bin ein BefehlDie Zeile "Ich bin ein Kommentar" bleibt bei der Ausführung "unberücksichtigt".
Beispiel, in dem :: nicht funktioniert:
Inhalt der Batchdatei
@echo off if 1==1 ( :: Kommentar 1 :: Kommentar 2 echo OK )Ausgabe der Batchdatei
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 0Mit C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 12 kann man eine andere Batch-Datei aufrufen. Sobald diese beendet wurde, wird die ursprüngliche Batchdatei weiter ausgeführt.
Beispiel:
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 1C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 2Die Ausgabe wenn man die Datei Call.cmd startet:
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 3Wenn die Befehlserweiterungen aktiviert sind (Standard ab Windows 2000) kann man auch Sprungmarken aufrufen (und auch Parameter übergeben):
Beispiel:
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 4Die Ausgabe:
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 5Beispiel mit Parameter:
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 6Die Ausgabe:
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 7C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 8Dieser Befehl springt automatisch zum Ende der Batchdatei (beendet die aktuelle Prozedur)
Anzeige der aktuellen CodePage oder Setzen einer neuen CodePage (change codepage)
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 9Beispiele für nnn:
- 437 – Die ursprüngliche Zeichensatztabelle des IBM-PC
- 720 – Arabisches Alphabet
- 737 – Griechisches Alphabet
- 850 – westeuropäische Sprachen (DOS-Latin-1)
- 857 – Türkisches Alphabet
- 866 – Kyrillisches Alphabet
- 1252 - DOS8 Umlaute werden richtig Codiert
Mit C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 13 (clear screen) wird der Bildschirm gelöscht.
Syntax
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 13
Interner Befehl: Ab MS-DOS bis Windows 8
Beispiel:
Inhalt
@echo off :: Verhindert, dass dieser Kommentar angezeigt wird. 0
Ausgabe
Syntax:
- Windows 2000, XP, Vista, 7, 8 und 10
Web-Links:
Erklärung:
Der Befehl CMD startet eine neue Instanz des Kommandozeileninterpreters (cmd.exe).
Verwendung:
In Kombination mit dem Befehl START öffnet sich die neue Instanz auch in einem neuen Kommandozeilenfester (ohne START öffnet sie sich im gleichen Fenster).
Beispiele:
Inhalt der Batchdatei
@echo off :: Verhindert, dass dieser Kommentar angezeigt wird. 2Ausgabe (unter XP)
@echo off :: Verhindert, dass dieser Kommentar angezeigt wird. 3Ausgabe (unter Vista)
@echo off :: Verhindert, dass dieser Kommentar angezeigt wird. 4Ausgabe (unter Win 7)
@echo off :: Verhindert, dass dieser Kommentar angezeigt wird. 5Ausgabe (unter Win 8 Beta)
@echo off :: Verhindert, dass dieser Kommentar angezeigt wird. 6Ausgabe (unter Win 10)
@echo off :: Verhindert, dass dieser Kommentar angezeigt wird. 7
Mit dem Befehl COLOR kann man die Vorder- und Hintergrundfarbe verändern. Die COLOR Werte bestehen aus zwei HEX-Werten, wobei der erste HEX-Wert für die Hintergrundfarbe und der zweite HEX-Wert für die Vordergrundfarbe steht. Jede Ziffer kann einen der folgenden Werte annehmen:
HEX-WertFarbe0Schwarz1Dunkelblau2Dunkelgrün3Blaugrün4Dunkelrot5Lila6Ocker7HellgrauHEX-WertFarbe8Dunkelgrau9BlauAGrünBZyanCRotDMagentaEGelbFWeißDer folgende Befehl ergibt z.B. einen blauen Hintergrund mit weißer Schrift. (Ähnlichkeit mit dem Bluescreen in älteren Windows Versionen)
@echo off :: Verhindert, dass dieser Kommentar angezeigt wird. 8Zum Zurücksetzen der Vorder- und Hintergrundfarbe wird COLOR einfach ohne Argumente aufgerufen.
@echo off :: Verhindert, dass dieser Kommentar angezeigt wird. 9(Unter Windows 10 nicht mehr anwendbar) Syntax:
- DOS, Windows 95, 98, 98 SE, ME
Web-Links:
Erklärung/Verwendung:
Startet einen neuen Kommandointerpreter, dieser kann mit C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 17 wieder beendet werden.
Beispiel:
Inhalt
C:\>:: Dieser Kommentar wird so angezeigt 0Ausgabe (unter Windows 95)
C:\>:: Dieser Kommentar wird so angezeigt 1Gibt das aktuelle Datum aus und ermöglicht dem Benutzer die Änderung des Datums. Wird der Befehl mit dem Parameter /t aufgerufen, so wird nur das aktuelle Datum ausgegeben.
DATE kann auch als Variable benutzt werden, so kann man zum Beispiel mit %date:~6,4% auf das Jahr zugreifen.
Beispiele:
C:\>:: Dieser Kommentar wird so angezeigt 2C:\>:: Dieser Kommentar wird so angezeigt 3C:\>:: Dieser Kommentar wird so angezeigt 4Hier werden vom Datum die ersten 6 Zeichen weggelassen und dann vier Stellen angezeigt. Bei time funktioniert das analog.
C:\>:: Dieser Kommentar wird so angezeigt 5Bei einigen Betriebssystemversionen erfordert das Ändern des Systemdatums administrative Rechte.
XP: Die Ausgabe des Datumsformates ist abhängig von den Einstellungen in den Regions- und Sprachoptionen (Systemsteuerung)
Hinweis: Die Uhrzeit lässt sich mit dem Befehl "TIME" ermitteln.
Gibt einen Text aus oder schaltet die Befehlszeilen an/aus. Wenn ein Text ausgegeben wird, können dort auch Variablen angezeigt werden, wie z. B. die Variable %ver% (in Windows XP %os%).
Syntax:
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 18 oder alternativ C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 19
Interner Befehl: Ab MS-DOS bis Windows NT 5.1 (XP)
Beispiel:
Inhalt
C:\>:: Dieser Kommentar wird so angezeigt 6Ausgabe
C:\>:: Dieser Kommentar wird so angezeigt 7Mit C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 20 können Sie zudem leere Zeilen ausgeben. Beispiel:
Inhalt
C:\>:: Dieser Kommentar wird so angezeigt 8Ausgabe
C:\>:: Dieser Kommentar wird so angezeigt 9Benutzereingaben mit ECHO[Bearbeiten]
Mit Hilfe des C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt...
Diese Zeile wird mit Befehlszeile ausgeführt...
und diese ohne!
21-Befehls können Sie auch in einem Skript Benutzereingaben simulieren, indem Sie den Pipe-Operator | verwenden.
Beispiel: Uhrzeit anzeigen ohne Nachfrage
Das normale Verhalten des C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt...
Diese Zeile wird mit Befehlszeile ausgeführt...
und diese ohne!
22-Befehls ist, die aktuelle Zeit der verwendeten Systemuhr anzuzeigen und in der nächsten Zeile die Eingabe einer neuen Uhrzeit zu erwarten. Drückt man auf Enter, bleibt die Systemzeit unverändert. Will man die Zeit nur anzeigen lassen (z. B. in einer Batchdatei vor und nach einer Befehlsfolge, um zu messen, wie lange der PC dafür braucht), lässt sich die Betätigung der Enter-Taste durch einen entsprechenden C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt...
Diese Zeile wird mit Befehlszeile ausgeführt...
und diese ohne!
21-Befehl ersetzen.
Über den Pipe-Mechanismus lässt sich darüber hinaus die Zeile „Geben Sie die neue Uhrzeit ein:“ unterdrücken:
Setlocal EnableDelayedExpansion Set _var=first Set _var=second& Echo %_var% !_var! 1Dabei ist die Groß-/Kleinschreibung von "neue" zu beachten oder der Schalter C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 24 zu verwenden, denn C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 25 ist case-sensitiv! Diese Beispiele dienen allerdings nur zur Demonstration, denn die Zeitausgabe wäre auch ohne Pipes (aber erst ab Windows 2000) möglich mit:
Setlocal EnableDelayedExpansion Set _var=first Set _var=second& Echo %_var% !_var! 2oder einfach:
Setlocal EnableDelayedExpansion Set _var=first Set _var=second& Echo %_var% !_var! 3Sehr nützlich ist das C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt...
Diese Zeile wird mit Befehlszeile ausgeführt...
und diese ohne!
21-Piping auch zur Übergabe von Benutzereingaben, welche von einzelnen Befehlen abgefragt werden.
Beispiel: Überprüfung einer Festplatte
kann (da es sich beim Laufwerk C um das Systemlaufwerk handelt) erst nach einem Systemstart ausgeführt werden. Normalerweise müsste der Benutzer deswegen den Systemstart durch Eingabe von "Y" bestätigen. Diese Aktion kann man in einem Batch so abbilden:
Setlocal EnableDelayedExpansion Set _var=first Set _var=second& Echo %_var% !_var! 5.
Syntax:
- Windows XP, Windows Vista, Windows 7, Windows 10
Verwendung:
Zeigt an, ob der letzte Befehl erfolgreich war. Zum Prüfen ob der letzte Befehl ohne Fehler war, kann der folgende Code verwendet werden:
Dann kann im Fehlerfall etwas (...) gemacht werden. Dies funktioniert auch wenn der Errorlevel >= 1 ist.
Beispiel
Setlocal EnableDelayedExpansion Set _var=first Set _var=second& Echo %_var% !_var! 6- del %homepath%\Desktop\Ordner = Im Homepath (C:\Users\Username) wird im Ordner "Desktop" der Ordner "Ordner" gelöscht.
- echo %Errorlevel% = Errorlevel wird angezeigt. 1 bedeutet "Befehl fehlgeschlagen", 0 bedeutet "Befehl ausgeführt". 2 bedeutet "Unbekannt".
ENDLOCAL / (SETLOCAL)[Bearbeiten]
Syntax:
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 28
Links:
Verwendung:
Schliesst den Befehl SETLOCAL ab. Siehe SETLOCAL
Der Befehl C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 17 beendet die Abarbeitung der Batchdatei, die Abarbeitung einer Unterroutine bzw. die cmd.exe Instanz (das Kommandozeilenfenster).
Syntax:
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 30
Wird keinangegeben, bleibt ein zuvor gesetzter Errorlevel unverändert.
Als Parameter kann derangegeben werden, der an das aufrufende Programm bzw. die aufrufende Routine zurückgegeben wird. Aufrufende Routinen können ihn dort als Errorlevel auswerten.
Wird /B in einer Batchdatei angegeben, endet nur die Batchdatei (oder die Unterroutine) und nicht die CMD.exe. Auf der Kommandozeile wird /B ignoriert.
Achtung:
Die Reihenfolge der Parameter ist einzuhalten: ein /B nach demwird ignoriert.
Beispiele:
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 31
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 32
Links:
Ermöglicht die Schleifenbearbeitung.
Syntax:
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 33
Interner Befehl: Ab MS-DOS bis Windows NT 6.1 (Windows 7)
ACHTUNG:
Die Variable darf nur aus einem Buchstaben bestehen! "%t" ist erlaubt, "%test" nicht! Bei der Verwendung mehrerer Befehle muss zwischen "DO" und der Klammer "(" ein Leerzeichen sein.
Falsch
Setlocal EnableDelayedExpansion Set _var=first Set _var=second& Echo %_var% !_var! 7RICHTIG
Setlocal EnableDelayedExpansion Set _var=first Set _var=second& Echo %_var% !_var! 8Beispiel:
Zeigt alle Dateien im Verzeichnis %temp% an. Es werden nur Dateien, keine Verzeichnisse angezeigt. Um Verzeichnisse anzuzeigen siehe Liste der FOR-Optionen unten. Der Parameter C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 34 bewirkt, dass alle Unterverzeichnisse mit einbezogen werden (Rekursive Schleife).
Inhalt
Setlocal EnableDelayedExpansion Set _var=first Set _var=second& Echo %_var% !_var! 9Ausgabe
first second 0
Zählschleifen
Mit solchen Schleifen kann man Aktionen eine bestimmte Anzahl oft ausführen. Dazu muss man den Parameter /L angeben.
Syntax: C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 35
first second 1Ausgabe:
first second 2verschachtelte Zählschleife:
first second 3Ausgabe:
first second 4Weitere Möglichkeiten der FOR-Schleife:
syntax-FOR-Files
first second 5syntax-FOR-Files-Rooted at Path
first second 6syntax-FOR-Folders
first second 7syntax-FOR-List of numbers
first second 8syntax-FOR-File contents
first second 9if exist C:\blabla.txt goto EDITBLA goto END :: Kommentarzeile, sofern es erforderlich ist, einen Kommentar zu schreiben :: Zur Unterscheidung von Sprungmarken verwende ich zwei "::" :EDITBLA edit c:\blabla.txt :END 0syntax-FOR-Command Results
if exist C:\blabla.txt goto EDITBLA goto END :: Kommentarzeile, sofern es erforderlich ist, einen Kommentar zu schreiben :: Zur Unterscheidung von Sprungmarken verwende ich zwei "::" :EDITBLA edit c:\blabla.txt :END 1Beispiel: Sucht im Ordner C:\Windows\Temp rekursiv nach Dateien mit dem Namen //temp.dat// und gibt die Liste aus. Die Option "tokens=*" ist notwendig, damit die Ausgabe zeilenweise gelesen wird und auch Pfade mit enthaltenem Leerzeichen ausgegeben werden können.
if exist C:\blabla.txt goto EDITBLA goto END :: Kommentarzeile, sofern es erforderlich ist, einen Kommentar zu schreiben :: Zur Unterscheidung von Sprungmarken verwende ich zwei "::" :EDITBLA edit c:\blabla.txt :END 2Zählvariablen in Zeichenketten einbetten
Um die Zählvariable %%f (%f auf der Kommandozeile) in einer Zeichenfolge zu verwenden, wird einfach die Variable in dem String eingebettet
if exist C:\blabla.txt goto EDITBLA goto END :: Kommentarzeile, sofern es erforderlich ist, einen Kommentar zu schreiben :: Zur Unterscheidung von Sprungmarken verwende ich zwei "::" :EDITBLA edit c:\blabla.txt :END 3Listen erzeugen
if exist C:\blabla.txt goto EDITBLA goto END :: Kommentarzeile, sofern es erforderlich ist, einen Kommentar zu schreiben :: Zur Unterscheidung von Sprungmarken verwende ich zwei "::" :EDITBLA edit c:\blabla.txt :END 4Ist rechenaufwendiger, aber weniger fehleranfällig als ein mehrzeiliges SET mit ^-maskierten Zeilenumbrüchen, wo ein ^ am Ende der Liste ein Return mitten im späteren Befehlsaufruf auslösen würde.
Mit dem Batchbefehl C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 00 wird eine Sprungmarke C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 37 (s.o.) angesprungen.
Syntax
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 38
Beispiel
Siehe unter : (Doppelpunkt).
Der C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 39-Befehl ermöglicht eine einfache Verzweigung und wird oft zusammen mit dem GOTO-Befehl eingesetzt. C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 39 ermöglicht hierbei sowohl die Prüfung auf eine Gleichheit als auch auf das Vorhandensein von Dateien.
Beispiel 1:
if exist C:\blabla.txt goto EDITBLA goto END :: Kommentarzeile, sofern es erforderlich ist, einen Kommentar zu schreiben :: Zur Unterscheidung von Sprungmarken verwende ich zwei "::" :EDITBLA edit c:\blabla.txt :END 5Beispiel 1 prüft, ob eine Logdatei vorhanden ist und erstellt ggf. eine Neue.
Beispiel 2:
if exist C:\blabla.txt goto EDITBLA goto END :: Kommentarzeile, sofern es erforderlich ist, einen Kommentar zu schreiben :: Zur Unterscheidung von Sprungmarken verwende ich zwei "::" :EDITBLA edit c:\blabla.txt :END 6Beispiel 3:
if exist C:\blabla.txt goto EDITBLA goto END :: Kommentarzeile, sofern es erforderlich ist, einen Kommentar zu schreiben :: Zur Unterscheidung von Sprungmarken verwende ich zwei "::" :EDITBLA edit c:\blabla.txt :END 7Beachten Sie, bei der Prüfung von Umgebungsvariablen niemals
if exist C:\blabla.txt goto EDITBLA goto END :: Kommentarzeile, sofern es erforderlich ist, einen Kommentar zu schreiben :: Zur Unterscheidung von Sprungmarken verwende ich zwei "::" :EDITBLA edit c:\blabla.txt :END 8zu schreiben, wenn die Umgebungsvariable nicht gesetzt ist; Sie erhalten sonst einen Syntaxfehler. Der Parameter C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 41 unterbindet eine Differenzierung der Groß-/Kleinbuchstaben.
ACHTUNG:
Bei der Verwendung mehrerer Befehle muss zwischen Bedingung und der Klammer "(" ein Leerzeichen sein.
Falsch
if exist C:\blabla.txt goto EDITBLA goto END :: Kommentarzeile, sofern es erforderlich ist, einen Kommentar zu schreiben :: Zur Unterscheidung von Sprungmarken verwende ich zwei "::" :EDITBLA edit c:\blabla.txt :END 9Richtig
::echo Ich bin ein Kommentar echo Ich bin ein Befehl 0C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 39C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 43C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 44C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 45C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 46
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 39C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 48 EQU C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 49 C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 50 An die Stelle von EQU kann jede der Optionen gesetzt werden.
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 51 Der Befehl wird nur ausgeführt, wenn die Bedingung NICHT Wahr ist. Optional.C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 45 ist gleichC:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 53 ist gleichC:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 54 nicht gleichC:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 55 kleiner alsC:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 56 kleiner als oder gleichC:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 57 größer alsC:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 58 größer als oder gleichHinweis zu UND- bzw. ODER-Verknüpfung[Bearbeiten]
Eine UND- bzw. ODER-Verknüpfung von zwei Bedingungen scheint nicht direkt möglich zu sein. Beim Vergleichen von Strings hilft es aber eventuell, wenn man die beiden Strings miteinander verkettet.
Beispiel
Als Workaround können mehrere aufeinanderfolgende IFs zu einer UND- bzw. ODER-Verknüpfung kombiniert werden. Bei einer ODER-Verknüpfung wird der Code ausgeführt, sobald eine der Bedingungen wahr ist. Wenn alle Bedingungen geprüft wurden und keine erfolgreich war, werden die Befehle im ELSE-Zweig ausgeführt.
::echo Ich bin ein Kommentar echo Ich bin ein Befehl 2Für ein UND wird in den ELSE-Zweig gesprungen ( :FALSCH ) sobald eine der Bedingungen nicht zutrifft. Nur wenn alle Bedingungen zutreffen wird der Code ausgeführt.
::echo Ich bin ein Kommentar echo Ich bin ein Befehl 3
Die am weitesten verbreitete, kurze und gut lesbare UND-Variante ist, zwei oder mehrere IF-Bedingungen nacheinander zu schreiben.
Diese beiden Beispiele lassen sich einfach durch Kopieren der "IF..."-Zeile um beliebig viele Bedingungen erweitern. Ein Mischen von UND- und ODER-Verknüpfungen ist leider nicht ohne weiteres möglich. Außerdem dürfen Parameter niemals leer sein - deshalb sollten Variablen z. B. in Anführungszeichen eingeschlossen werden.
Lädt Tastaturtreiber. keyb gr,,c:\dos\keyboard.sys lädt den deutschen Tastaturtreiber (keyboard.sys muss sich im Verzeichis c:\dos\ befinden)
Unterbricht die Abarbeitung der Batchdatei und wartet auf einen Tastendruck.
Syntax
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 59
Interner Befehl: Ab MS-DOS bis Windows NT 5.1 (XP)
Beispiel 1:
Inhalt
::echo Ich bin ein Kommentar echo Ich bin ein Befehl 5Ausgabe
::echo Ich bin ein Kommentar echo Ich bin ein Befehl 6(Neue Seite)
::echo Ich bin ein Kommentar echo Ich bin ein Befehl 7
Beispiel 2:
Inhalt
::echo Ich bin ein Kommentar echo Ich bin ein Befehl 8Ausgabe
::echo Ich bin ein Kommentar echo Ich bin ein Befehl 9Um eine Pause für eine bestimmte Zeitdauer vorzugeben, kann der Befehl C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 60 verwendet werden.
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 61Legt das Aussehen der Eingabezeile mit Hilfe unterschiedlicher Parameter [1] fest.C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 62 Ausgabe: C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 63
Der Prompt kann auch permanent über eine Umgebungsvariable geändert werden:C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 64Sollte der Befehl alleine und ohne Funktion eingegeben werden, so wird die Wirkung aufgehoben.
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 65 wechselt zum angegebenen Pfad und speichert den aktuellen Pfad bis zum Aufruf von C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 66.
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 66 wechselt zum gespeicherten Pfad.
Die Befehle können geschachtelt werden.
Syntax
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 68
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 66
Beispiel:
Syntax:
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 70Erklärung:
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 71 leitet einen Kommentar ein. Die Zeile wird ignoriert, beachten Sie jedoch, dass C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 71 von einem Leerzeichen / Tabulator gefolgt werden muss, sonst wird die Ausführung der Batchdatei unmittelbar beendet. Alternativ können zwei Doppelpunkte hintereinandergeschrieben werden C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 11 um einen Kommentar anzuführen (hier ist ein Leerzeichen nicht notwendig). Alternativ können auch Sprungmarken C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 74 oder der Echobefehl C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 21 verwendet werden.Beispiele:
Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\>echo Ich bin ein Befehl Ich bin ein Befehl 1Web-Links:
Mit dem rename-Befehl kann man Dateien umbenennen.
Syntax:
- MS-DOS und Windows: C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 76
- seit Windows 98 auch C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 77
Syntax:
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 78Verwendung:
Wird hauptsächlich verwendet, um einer Variablen einen Wert zuzuweisen. Siehe Batchbefehle (Variablen und Set-Befehl)
Ohne Parameter gibt set eine Liste aller Umbegebungsvariablen aus.
Der Parameter C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 79 kann dazu verwendet werden der Variable eine Benutzereingabe zuzuweisen.
Der Parameter C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 80 kann dazu verwendet werden, um mit den Variablen Rechenoperation durchzuführen.
Beispiel zur Wertezuweisung:
Inhalt Batchdatei:
Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\>echo Ich bin ein Befehl Ich bin ein Befehl 3Ausgabe (gekürzt):
Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\>echo Ich bin ein Befehl Ich bin ein Befehl 4Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\>echo Ich bin ein Befehl Ich bin ein Befehl 5SETLOCAL / (ENDLOCAL)[Bearbeiten]
Syntax:
C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 81C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 82C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 83Links:
Siehe auch Batchbefehle (Variablen und Set-Befehl)
Gibt die aktuelle Zeit aus und ermöglicht dem Benutzer die Änderung der Uhrzeit. Wird der Befehl mit dem Parameter /t aufgerufen, so wird nur die aktuelle Zeit ausgegeben. time kann auch als Variable benutzt werden, so kann man zum Beispiel mit %time:~0,5% die ersten 5 Zeichen übernehmen.
Beispiele:
Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\>echo Ich bin ein Befehl Ich bin ein Befehl 6Möchte man die aktuelle Zeit für einen Dateinamen verwenden, stört der Doppelpunkt, der in Dateinamen nicht erlaubt ist. Ich kenne zwei Lösungen:
Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\>echo Ich bin ein Befehl Ich bin ein Befehl 7Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\>echo Ich bin ein Befehl Ich bin ein Befehl 8Bei einigen Betriebssystemversionen erfordert das Ändern der Systemzeit administrative Rechte.
Dieser Befehl ändert die Fensterüberschrift der Eingabeaufforderung. (Falls der Befehlsinterpreter mit Administrator-Rechten gestartet wurde, also "Administrator:" im Titel steht, kann nur der Text nach dem C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 74 geändert werden.)
Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\>echo Ich bin ein Befehl Ich bin ein Befehl 9Erklärung
Dieser Befehl überschreibt, beziehungsweise hängt etwas an eine vorhandene Datei an.
Beispiel >:
Inhalt:
@echo off if 1==1 ( :: Kommentar 1 :: Kommentar 2 echo OK ) 0Ausgabe:
@echo off if 1==1 ( :: Kommentar 1 :: Kommentar 2 echo OK ) 1In Beispiel.bat:
@echo off if 1==1 ( :: Kommentar 1 :: Kommentar 2 echo OK ) 2
Beispiel >>:
Inhalt:
@echo off if 1==1 ( :: Kommentar 1 :: Kommentar 2 echo OK ) 3Ausgabe:
@echo off if 1==1 ( :: Kommentar 1 :: Kommentar 2 echo OK ) 4In Beispiel.bat:
@echo off if 1==1 ( :: Kommentar 1 :: Kommentar 2 echo OK ) 5Erklärung C:\>echo Diese Zeile wird mit Befehlszeile ausgeführt... Diese Zeile wird mit Befehlszeile ausgeführt... und diese ohne! 85 hält eine Stapeldatei für eine anzugebende Zahl von Sekunden an, gibt aber dem Anwender die Möglichkeit, die Wartezeit mit einem Tastendruck vorzeitig zu beenden. Der Befehl ist seit Windows 7 verfügbar.