Batch-Befehle: Grundlagen & Tricks

Marco Kratzenberg

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: Grundlagen & Tricks

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 /?

Windows schneller machen: Die besten Tools

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 z.B. 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.
/F – löscht auch schreibgeschützte Dateien
/S – löscht ebenfalls alle Dateien in allen Unterverzeichnissen
/Q – Keine weiteren Rückfragen bei Platzhaltern wie *.*
/A – Löscht Dateien nach ihren Dateiattributen. Also löscht etwa /A:H nur versteckte Dateien.
DIR Listet alle Dateien und Verzeichnisse des aktuellen Verzeichnisses auf.DIR *.JPG listet nur Dateien mit der Endung JPG auf, usw.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.
COPYCOPY (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:
echo Du heißt also %1
pause

 

Batch-Aufruf:
name.bat Erwin

Ausgabe:
Du heißt also Erwin

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
(NUL unterdrückt in diesem Fall die Ausgabe komplett)
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”
IF ERRORLEVEL 2 GOTO Marke2
IF ERRORLEVEL 1 GOTO Marke1:Marke2
EXIT:Marke1
dir *.*
pause
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.

  • Ruft mit der Tastenkombination Windows-Taste + X das Menü auf und wählt dort System. In Windows 7 könnt ihr in der Systemsteuerung in das Suchfeld das Wort “Umgebungsvariablen” eingeben und gelangt ebenfalls dorthin.
  • Links geht zu Erweiterte Systemeinstellungen.
  • Im Kartenreiter Erweitert geht auf den unteren Button Umgebungsvariablen.
  • Macht unten bei Systemvariablen einen Doppelklick auf Path.
  • Dort entweder den Pfad zu Eurer Batch-Datei hinzufügen, oder gucken, 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.

Mehr zum Thema

Neue Artikel von GIGA SOFTWARE