Batch-Befehle sind ein Überbleibsel aus der MS-DOS-Zeit, aber sie haben noch lange nicht ausgedient. Wir verraten euch die interessantesten Batch-Befehle, mit denen ihr Aufgaben lösen könnt, die Windows allein nicht so schnell erledigen kann.
Batch-Befehle schreibt ihr in eine Batch-Datei. An anderer Stelle haben wir schon ausführlich erklärt, wie man eine Batch-Datei erstellen kann. Eine solche Batch-Datei ist im Grunde eine Textdatei, die einen oder mehrere Befehle enthält. Das können Befehle sein, die ins Betriebssystem integriert sind, aber auch normale Programmaufrufe. Ihr könnt sogar mit Batch-Befehlen andere Batchdateien aufrufen. Vieles, das diese Batch-Befehle erledigen, könnt Ihr auch mit der Maus in Windows erledigen. Aber eben immer nur einzeln nacheinander. Batch-Befehle schicken einen ganzen Stapel von Kommandos mit einem Befehl ab, was deutlich schneller geht.
Grundsätzlich bekommt Ihr alle verfügbaren Kommandozeilenbefehle von Windows angezeigt, wenn ihr unter unter dem Ausführen-Dialog eine Eingabeaufforderung mit „CMD“ öffnet und dann den Befehl „HELP“ eingebt. Zu jedem einzelnen der Befehle bekommt Ihr Anwendung und die einzelnen Parameter genannt, wenn ihr ein /? Anhängt. Also etwa „COPY /?“.
Standard-Batch-Befehle – Beispiele
Batch-Befehl | Verwendung |
@ECHO OFF | Sorgt dafür, dass im Ausgabefenster die Befehle nicht angezeigt werden. |
ECHO | Zeigt das an, was in der Batch-Datei dahinter steht. ECHO Hallo Erwin gibt aus Hallo Erwin. |
PAUSE | Stoppt die Abarbeitung der Batch-Befehle, bis eine beliebige Taste gedrückt wurde. Kann etwa am Ende einer Batch-Datei stehen, damit man das Ausgabefenster noch einmal auf Fehlermeldungen kontrollieren kann. |
REM | Steht REM vor einer Zeile der Batch-Datei, wird diese Zeile als Kommentar betrachtet und nicht als Befehl ausgeführt. So könnt Ihr etwa Befehle auskommentieren, die derzeit nicht ausgeführt werden sollen. |
DEL bzw. ERASE | Löscht eine oder mehrere Dateien. Kann mit folgenden einzeln oder gleichzeitig angehängten Parametern aufgerufen werden:/P – fordert vor jeder Löschung zur Bestätigung auf. |
DIR | Listet alle Dateien und Verzeichnisse des aktuellen Verzeichnisses auf. DIR *.JPG listet nur Dateien mit der Endung JPG auf. DIR /P ist nützlich für Ordner mit vielen Dateien, da /P eine Pause nach jedem Ausgabefenster einschaltet. DIR /S listet auch Unterverzeichnisse auf. |
COPY (Quelle) (Ziel) | COPY *.doc D:\DOCS – kopiert alle Dateien mit der Endung DOC ins angegebene Verzeichnis. COPY namen.txt voramen.txt – Legt eine Kopie der Datei namen.txt an und nennt sie vornamen.txt. |
EXIT | Schließt das Ausgabefenster, nachdem alle Batch-Befehle abgearbeitet wurden. |
RD (Remove Directory) | Löscht Verzeichnisse. RD /S /Q Pfadangabe - löscht alle Dateien, Verzeichnisse und Unterverzeichnisse im angegebenen Pfad (/S) ohne Nachfrage (/Q). |
Ungewöhnliche Batch-Befehle
Jeder kann Batch-Befehle wie DEL oder XCOPY nutzen und noch ein paar feste Parameter und Pfade anfügen. Aber es gibt eben auch ein paar eher spezielle Batch-Befehle, die euch aber sehr helfen können.
Batch-Befehl | Beispielaufruf | Verwendungsbeispiel |
%CD% | MOVE *.docx „%CD%/DOCS/ | Mit %CD% wird der gesamte aktuelle Pfad ersetzt. Im links stehenden Aufruf werden also alle Dateien mit der Endung DOCX in ein Unterverzeichnis des aktuellen Pfades verschoben. Befehle wie MOVE brauchen zur Ausführung den kompletten Pfad, den ihr auf diese Weise nicht eingeben müsst. Mit einem solchen Befehl könnt Ihr also Verzeichnisse aufräumen und Daten zielgerichtet bewegen. |
%1, %2, %3 … | Batch-Zeile: | Batch-Befehle können mehrere Variablen verarbeiten. Ihr ruft die Batch-Datei auf und fügt manuell den Inhalt der Variablen hinten an den Befehl an.Die Befehlszeile batch.bat Huhu Hallo Tach übergibt also die drei Variablen Huhu, Hallo und Tach an die Batch-Befehle in der Batch-Datei. Ihre Reihenfolge legt gleich auch die Nummer der Variable fest. Da Hallo an zweiter Stelle steht, würde es dort eingesetzt, wo in der Batchdatei %2 steht. Huhu ist also %1 und Tach ist %3.Wenn innerhalb der Batchdatei nur eine Variable verwendet wird, so werden zusätzlich übergebene Variablen ignoriert. |
> (Größer-Zeichen) | DIR *.* > liste.txtDIR *.* > NUL | Das Größer-Zeichen > ist ein Redirector für Batch-Befehle. Anstatt also etwa bei DIR *.* alle Dateien im Fenster aufzulisten, sorgt dieses Zeichen dafür, dass die Ausgabe des Befehls in eine Datei umgeleitet wird. Die enthält dann eine Liste aller Dateien und ihrer Attribute. |
CHOICE | choice /M „Willst Du ein Listing, Ja oder Nein“ | CHOICE fragt den Benutzer nach einer Entscheidung. Diese kann vorgeben werden und aus Buchstaben oder Zahlen bestehen.Die ERRORLEVEL werden von hinten nach vorne abgearbeitet. Die erste Antwort (z.B. Ja) ergibt ERRORLEVEL 1, die zweite Auswahl ergibt ERRORLEVEL 2 usw.Ihr könnt dann zu Sprungmarken springen, hinter denen Befehle folgen. CHOICE /? Erklärt den Batch-Befehl. |
Eigenheiten der Batch-Befehle
Batch-Befehle werden nacheinander ausgeführt. Das bedeutet nicht nur, dass sie in einer vorgegebenen Reihenfolge ausgeführt werden. Das bedeutet vor allem, dass der nachfolgende Befehl wartet, bis der vorangegangene fertig ist! Ihr startet also nicht z.B. mit einem Batch-Befehl fünf Programme gleichzeitig, sondern fünf Programme nacheinander.
Batch-Befehle können ihrerseits mit Parametern aufgerufen werden. Wenn ihr also eine Batch-Datei nicht einfach anklickt, sondern sie manuell auf der Kommandozeile aufruft, dann könnt ihr hinten noch ein paar weitere Parameter anhängen. Ein kleines Beispiel:
Wenn ein Programm auf allen möglichen Datenträgern eigene temporäre Ordner anlegt und sie nicht aufräumt, dann könntet ihr zu deren Beseitigung eine Batch-Datei schreiben. Die Datei weg.bat enthält dann zum Beispiel die Zeile
del C:\TEMPSCHROTT
Wenn es solche Ordner aber immer wieder auch auf D: und E. gibt, dann müssten die extra berücksichtigt werden. Also tragt Ihr entweder für jedes dieser Laufwerke eine weitere Zeile ein, oder Ihr verwendet eine Variable als Platzhalter. Diese Variablen könnt ihr durchnummerieren und die erste heißt demnach %1. Setzt sie dort ein, wo sich etwas ändert. Also in meinem Beispiel beim Laufwerksbuchstaben. Die Zeile heißt danach
del %1:\TEMPSCHROTT
Und aufgerufen wird die weg.bat mit der angehängten Variable. Der Aufruf weg.bat C löscht den Ordner auf Laufwerk C:. Und startet ihr weg.bat E, dann wird der Ordner auf E: gelöscht.
Wichtig dabei: Es wird eben nur das in die Variable übernommen, das hinterher manuell hinzugefügt wird. Ohne Variableneingabe funktionieren diese Batch-Befehle gar nicht mehr. Und hättet Ihr als Batch-Befehl gleich del %1 genommen, so müsstet ihr den ganzen Pfad von Hand an die Batch-Datei hängen.
Batch-Befehle immer erreichen
In der Regel liegen eure Batch-Dateien nicht unbedingt dort, wo sie benötigt werden. Ihr müsst sie also entweder dorthin kopieren, wo sie benötigt werden, oder als Variablen endlose Pfade angeben. Doch schließlich gibt es auch unter Windows die Systemumgebungsvariablen.
Ihr müsst nur die globale Pfadangabe in den Systemumgebungsvariablen kontrollieren bzw. korrigieren, damit ihr von überall aus eure Batch-Befehle nutzen könnt.
- In Windows könnt ihr am Start-Button in das Suchfeld das Wort „Umgebungsvariablen“ eingeben.
- Klickt im nächsten Fenster auf „Bearbeiten“.
- Fügt dort entweder den Pfad zu Eurer Batch-Datei hinzu, oder guckt, wohin ihr sie legen könnt, um sie immer zu erreichen. (Zum Beispiel in den Ordner C:\Windows).
- Abspeichern und die Batch-Befehle gelten systemweit auf allen Laufwerken.