HOWTO · Batch
CMD-Befehle im Batch-Skript ausführen
In diesem Lernprogramm wird erläutert, wie Sie CMD-Befehle in Batch Script ausführen.
Auf dieser Seite
Eine Windows-Batchdatei ist eine Textdatei, die CMD-Befehle der Reihe nach ausführt. So können Sie wiederkehrende Arbeitsschritte speichern und gemeinsam ausführen. Schreiben Sie jeden Befehl in eine eigene Zeile, speichern Sie die Datei mit der Erweiterung .bat oder .cmd und starten Sie sie anschließend im Datei-Explorer oder in der Eingabeaufforderung. Die Reihenfolge ist wichtig: Ein Befehl, der einen Ordner oder eine Datei verwendet, muss nach dem Schritt ausgeführt werden, der diesen Ordner oder diese Datei erstellt oder dorthin führt.
So führen Batchskripte CMD-Befehle aus
CMD liest eine Batchdatei von oben nach unten und verarbeitet jede Zeile als Befehl. Die Zeile @echo off blendet die Befehle während der Ausführung aus; Text, den echo ausgibt, bleibt sichtbar. Das ausführbare Shell-Beispiel unten gibt dieselbe Meldung aus. Die entsprechende CMD-Zeile in einer .bat- oder .cmd-Datei lautet echo Batch commands run in order.
Führen Sie dieses Beispiel aus:
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
printf '%s\n' 'Batch commands run in order.'
Batch commands run in order.
Wenn das Shell-Beispiel ausgeführt wird, gibt printf die Meldung auf der Standardausgabe aus. In einer Windows-Batchdatei gibt der entsprechende echo-Befehl sie im Fenster der Eingabeaufforderung aus. Die Meldung „Batch commands run in order.“ bleibt im unveränderten Beispiel auf Englisch. Das Beispiel ist bewusst kurz gehalten; fügen Sie bei Bedarf weitere CMD-Befehle in jeweils eigenen Zeilen hinzu.
Befehle in eine Batchdatei schreiben
Öffnen Sie einen Texteditor, geben Sie die Befehle in der gewünschten Reihenfolge ein und speichern Sie die Datei unter einem aussagekräftigen Namen wie daily-task.bat. Die Erweiterungen .bat und .cmd kennzeichnen beide Windows-Befehlsskripte. Prüfen Sie, ob der Editor die gewählte Erweiterung gespeichert und nicht unbemerkt eine Dateiendung für Textdateien angehängt hat.
Ordnen Sie bei längeren Aufgaben voneinander abhängige Befehle richtig an. Definieren Sie beispielsweise mit set "WORK_DIR=%TEMP%\BatchDemo" einen wiederverwendbaren Ordner, erstellen Sie ihn mit if not exist "%WORK_DIR%" mkdir "%WORK_DIR%", wechseln Sie mit cd /d "%WORK_DIR%" dorthin und schreiben Sie anschließend mit echo Batch file ran successfully.>status.txt eine Statusdatei, die Sie mit type status.txt anzeigen können. Der Befehl mkdir steht vor cd, damit der Ordner existiert, bevor das Skript dorthin wechselt. cd /d wechselt bei Bedarf sowohl das aktuelle Laufwerk als auch das Verzeichnis. Durch die Anführungszeichen um die Variable bleibt ein Pfad mit Leerzeichen zusammen. Die Befehle schreiben den Text „Batch file ran successfully.“ in die Statusdatei; dieser Beispieltext bleibt unverändert auf Englisch. Die genauen Auswirkungen der Skriptbefehle hängen von der Windows-Umgebung ab, in der die Batchdatei ausgeführt wird.
Batchdatei ausführen
Doppelklicken Sie im Datei-Explorer auf die gespeicherte Batchdatei, um sie zu starten. Um sie in einem bereits geöffneten Eingabeaufforderungsfenster auszuführen, wechseln Sie mit cd /d in den entsprechenden Ordner und geben Sie den Dateinamen ein. Liegt die Datei an einem anderen Ort, geben Sie ihren vollständigen Pfad in Anführungszeichen ein, zum Beispiel "C:\Users\Sam\Scripts\daily-task.bat". Ersetzen Sie den Beispielpfad durch den Speicherort auf Ihrem Computer.
Die Ausführung über die Eingabeaufforderung ist hilfreich, wenn Sie Meldungen lesen oder das Skript während des Ablaufs untersuchen möchten. Der Befehl pause wartet auf einen Tastendruck, ist aber normalerweise nicht nötig, wenn Sie die Datei in einem geöffnet bleibenden Fenster ausführen. Bei der Fehlersuche können Sie auch @echo off weglassen, damit Sie sehen, wie CMD die einzelnen Befehle verarbeitet.
Variablen und Bedingungen verwenden
Eine Variable speichert einen Wert, den Sie wiederverwenden können. Legen Sie sie in einer Batchdatei mit set "NAME=value" fest und greifen Sie mit %NAME% darauf zu. Die Zuweisung mit Anführungszeichen verhindert, dass versehentlich Leerzeichen um den Wert herum übernommen werden. Das obige Beispiel speichert einen Ordnerpfad in WORK_DIR und verwendet ihn in mehreren Befehlen. Wenn Sie den Ordner an einer Stelle ändern, werden dadurch alle diese Verweise angepasst.
Verwenden Sie eine if-Anweisung, wenn ein späterer Befehl von einer Bedingung abhängen soll. Beispielsweise gibt if exist "%WORK_DIR%\status.txt" echo Status file found nur dann eine Meldung aus, wenn die Datei vorhanden ist. Wenn mehrere Aktionen gemeinsam ausgeführt werden sollen, können Sie nach der Bedingung eine Befehlsgruppe in Klammern setzen. Lassen Sie den Pfad sowohl in der Bedingung als auch in den Befehlen in Anführungszeichen, damit Leerzeichen im Ordnernamen nicht als Trennzeichen zwischen Argumenten behandelt werden.
Häufige Probleme prüfen
Wenn das Skript nicht startet, prüfen Sie, ob der gespeicherte Dateiname auf .bat oder .cmd endet und der Editor keine weitere Erweiterung angehängt hat. Meldet CMD, dass ein Pfad nicht gefunden wurde, kontrollieren Sie die Schreibweise des Ordners. Stellen Sie außerdem sicher, dass ein Schritt zum Erstellen eines Verzeichnisses vor einem Befehl steht, der dieses Verzeichnis betritt oder verwendet. Setzen Sie Pfade mit Leerzeichen in Anführungszeichen.
Schließt sich ein Fenster, bevor Sie eine Meldung lesen können, führen Sie die Datei über die Eingabeaufforderung aus oder fügen Sie zur Fehlersuche pause hinzu. Wenn sich ein Befehl anders verhält als erwartet, führen Sie die Befehle einzeln in CMD aus und vergleichen Sie ihre Reihenfolge und Pfade mit denen in der Batchdatei. Wenn Sie wiederkehrende Befehle zusammenfassen, lassen sich Routineaufgaben unter Windows leichter einheitlich ausführen und aktualisieren.