In dem folgenden Tipp erfahren Sie, wie Sie eine eigene Batch-Datei erstellen, welchen Syntax Sie hierbei verwenden und wofür eine Batch-Datei überhaupt sinnvoll ist.
Wenn Sie sich selbst eine Batch-Datei erstellen, können Sie wiederkehrende Aufgaben automatisch ausführen lassen. In diesem Tipp stellen wir Ihnen den Aufbau und Syntax von Batch-Dateien vor und beschreiben mit einer Übersicht der wichtigsten Befehle verschiedene Anwendungsbeispiele.
Inhalt
- 1. Was ist eine Batch-Datei?
- 2. Einführung in Aufbau und Syntax einer Batch-Datei
- 3. Übersicht wichtiger Befehle, um eine Batch-Datei zu erstellen
- 4. So können Sie Batch-Dateien manuell oder automatisiert ausführen lassen
- 5. Eine eigene Batch-Datei erstellen, verschiedene Anwendungsbeispiele
- 6. Tutorial Batch Datei erstellen/Befehle mit Cmd ausführen
1. Was ist eine Batch-Datei?
Als Batch-Datei bezeichnet man eine textbasierte Scriptdatei, welche verschiedene, einfache Aufgaben über einfache Befehle nacheinander abarbeitet und im Gegensatz zu Programmen in Programmiersprachen wie C# oder C++ nicht kompiliert werden müssen, also direkt über den Kommandozeileninterpreter ausführbar sind. Der Name Batch bedeutet dabei „Stapel“, daher auch der die Bezeichnung Stapelverarbeitungsdatei.
Bereits zu DOS-Zeiten gab es Batch-Dateien, bekannt war hierbei vor allem die autoexec.bat, welche verschiedene Treiber für Maus, Soundkarte, CD-Laufwerk in den Speicher lud und Umgebungsvariablen setzte. Unter Windows stehen für eine Batch-Datei die Befehlssyntax der Eingabeaufforderung CMD.exe zur Verfügung, welcher von Windows-Version zu Windows-Version weitere Befehle erfahren hat.
Microsoft PowerShell statt die Kommandozeile?
Neben der Batchsprache für die Befehlszeile und dem ebenfalls schon sehr alten Windows Scripting Host, gibt es mit Microsoft PowerShell eine alternative Script-Sprache, welche gegenüber den klassischen Batch-Dateien von Windows nicht auf den Kommandozeileninterpreter cmd.exe aufsetzt, sondern ein komplettes Framework für verschiedene Windows-Version angeboten wird. PowerShell ist seit Windows 7 Bestandteil von Windows und zwischenzeitlich auch für Linux und Mac verfügbar. Der Syntax ist gegenüber dem von BAT-Dateien wesentlich komplexer in der Programmierung, bietet dafür auch viel mehr Möglichkeiten. Eine PowerShell-Dokumentation finden Sie direkt bei Microsoft.
1.1. Für diese Zwecke kann man Batch-Dateien einsetzen
Batch-Dateien kommen unter Windows vor allem in Netzwerkumgebungen sehr häufig vor. Administratoren setzen beim Anmelden eines Benutzers über eine Batch-Datei Berechtigungen, binden Netzwerklaufwerke ein oder kopieren wichtige Dateien in das lokale Profil. Beim Abmelden werden temporäre Ordner gelöscht oder andere Verwaltungsaufgaben abgearbeitet.
Im privaten Umfeld können Sie über eine selbst erstellte Batch-Datei beispielsweise wichtige Dateien und Ordner auf ein anderes Laufwerk kopieren, temporäre Dateien löschen, Netzwerklaufwerke verbinden und viele weitere Dinge realisieren.
2. Einführung in Aufbau und Syntax einer Batch-Datei
Eine Batch-Datei hat die Endung .CMD oder .BAT und ist eine einfache Text-Datei, welche Sie mit Notepad oder jedem anderen Texteditor erstellen und bearbeiten können.
Wenn Sie die Batch-Datei mit dem Texteditor von Windows erstellen, müssen Sie den Dateinamen beim Speichern mit der Endung "cmd" oder "bat" angeben, da Notepad sonst die Datei als .txt sichert.
Wir empfehlen einen Texteditor wie Notepad ++, welcher die Syntax von Batch-Dateien erkennt und Befehle sowie Parameter farblich kennzeichnet. Dies erleichtert die Erstellung von komplexen Batch-Dateien. Ein weiterer Vorteil ist die automatische Kodierung von Umlauten, indem Sie für eine fertige Batch-Datei die Sprache auf „MS-DOS Style“ ändern, um auch Umlaute in der Eingabeaufforderung richtig auszugeben.
2.1. Syntax und Struktur einer Batch-Datei
Eine einfache Batch-Datei enthält mindestens einen Befehl der Kommandozeile gefolgt von einigen Parametern. Der Befehl kann beispielsweise eine Datei kopieren, Programm starten oder nur eine Variable setzen. Befehle können mit einem „&“ kombiniert werden.
Echo Text 1 & Echo Text 2
Mit dem „Pipe“ | können werden Befehle verkettet werden, beispielsweise
dir c:\windows | more
In dem Beispiel wird das Verzeichnis von Windows angezeigt, am Seitenende aber auf die Eingabe des Anwenders gewartet, um mehr anzuzeigen.
Die Befehle können mit Bemerkungen (Remarks) ergänzt werden. Alles hinter dem Befehl REM wird nicht ausgeführt.
Bildschirmausgaben sind über den Echo-Befehl möglich oder können mit @Echo off unterdrückt werden. Im Kommandofenster werden dann nur noch Texte ausgegeben, wenn diese mit Echo eingeleitet werden.
Sie können die Textausgabe eines Befehls auch in eine Datei ausgeben. Dazu wird eine Spitzklammer verwendet, beispielsweise
netstat -a > c:\Logfilesliste.txt
Verwenden Sie dagegen zwei Spitzklammern, wird die bestehende Datei ergänzt:
netstat -a >> c:\Logfilesliste.txt
Für komplexere Batch-Dateien stehen Ihnen auch Bedingungsbefehle wie „If“ oder „if else“ sowie mit goto Sprungbefehle zu einer Sprungmarke innerhalb einer Batch-Datei zur Verfügung.
3. Übersicht wichtiger Befehle, um eine Batch-Datei zu erstellen
Einen kleinen Teil der Befehle, welche über die Kommandozeile für eine Batch-Datei verwendet werden können, listet CMD mit dem Befehl Help auf.
Die Liste umfasst viele gängige, aber auch weniger bekannte Befehle für die Programmierung wie beispielsweise den Robocopy-Befehl, mit dem sich gegenüber Copy oder XCopy weitaus komplexere Kopier- und Backupaufgaben realisieren lassen, wie es unser Artikel Robocopy- der Kopiergigant erklärt.
Die Syntax eines Befehles können Sie sich jeweils über den Parameter BEFEHL /? Anzeigen lassen.
Sie sehen in der Liste aber nicht alle Befehle, Abfragen und Funktionen, welcher der Kommandozeileninterpreter versteht. Die klassischen Befehle vom DOS-Prompt für Dateioperationen wie Löschen, Erstellen oder Umbenennen von Ordnern und Dateien (md, rd, copy, ren…) können Sie natürlich auch verwenden.
Einige Befehle kennen wiederum Unterbefehle, mit den sich weitere Operationen vornehmen lassen, beispielsweise Reg, net oder ftp.
Zu den wichtigsten Befehlen gehören:
- Echo
Mit @Echo off wird die Textausgabe in der Kommandozeile unterdrückt, mit @echo on wieder aktiviert. Ist die Ausgabe abgeschaltet, werden nur noch Texte über den Echo-Befehl gefolgt vom Text oder einer Variablen ausgegeben. - Copy
Der Copy-Befehl kopiert Dateien mit verschiedenen Parametern. - XCopy
XCopy bietet gegenüber dem klassischen Copy-Befehl noch viele weitere Möglichkeiten, welche wir in dem gesonderten Tipp XCopy - Parameter und Bespiele erklärt haben. - CD
wechselt in ein anderes Verzeichnis. - Del
Löscht eine Datei. - MKDIR
Erstellt eine Verzeichnis. - RMDIR
Löscht ein Verzeichnis. - Rename
Benennt eine Datei um. - regsvr32
Der Befehl regsvr32 registriert DLL-Dateien in Windows, damit diese vom System genutzt werden können. - Goto
Mit Goto können Sie zu einer zuvor definierten Sprungmarke springen, welche mit ":" zuvor definiert wurde. - Set
Der Set-Befehl setzt Umgebungsvariablen, welche von Programmen aber auch Batch-Dateien ausgelesen werden können. Bekannte Systemvariablen sind beispielsweise %computername% oder "%temp%. Mit dem Set-Befehl kann aber auch mit dem Parameter /P eine Eingabe vom Anwender erwartet und als Variable gespeichert werden. Geben Sie Set ohne einen weiteren Wert an, listet die Kommandozeile alle gesetzten Umgebungsvariablen auf. - Net
Greift auf die Netzwerkfunktionen von Windows zurück, um beispielsweise mit net use eine Netzwerkfreigabe als Laufwerk in Windows einzubinden. - Reg
Mit dem Reg-Befehl können Sie in Verbindung mit einem Unterbefehl Reg ADD, Reg DELETE, Reg COPY, Reg QUERY... auf die Registrierdatenbank von Windows zugreifen und dort gezielt Werte eintragen, ändern, auslesen oder löschen. - REM
Mit dem REM-Befehl können Sie Kommentare in Batch-Dateien setzen, welche bei der Ausführung nicht beachtet werden. - Runas
Dieser Befehl kann Programme im Kontext eines anderen Benutzers, beispielsweise des Administrators, starten. - Pause
Mit dem Pause-Befehl wartet die Batch-Datei auf eine Eingabe des Anwenders, bevor die Datei beendet oder weiter ausgeführt wird. - Shutdown
Der Befehl Shutdown fährt Windows herunter, meldet den Benutzer ab oder startetet das System neu und kennt dabei noch verschiedene Parameter, wie /r = startet das System neu, /h für den Ruhezustand oder /o ruft die erweiterten Starteinstellungen nach dem Neustart auf. - systeminfo
Startet das Tool Systeminfo, mit dem sich über den Befehl "findstr" bestimmte Werte auslesen lasen. - If
Mit dem If-Befehl können eine Eingabe abfragen oder in Kombination mit exist feststellen, ob eine bestimmte Datei existiert und dann zu einer Sprungmarke wechseln. - FTP
Mit dem FTP -Befehl nutzen Sie den FTP-Client der Kommandozeile, welche über weitere Befehle wie open, put, geht usw. verfügt. Der Nachteil von FTP über eine Batchdatei ist die Verwendung vom Benutzernamen und Kennwort im Klartext. - Start
Mit dem Start-Befehl können Sie Programme aus einer Batch-Datei heraus starten. Windows 10 Apps lassen sich auch auf diesem Wege starten, benötigen aber den kompletten Pfad zur App, wie beispielsweise start "shell:appsfolder\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge" "https://www.wintotal.de" Den Pfad zur App können Sie sich über Tools wie InstalledAppView anzeigen lassen.
Eine vollständige Übersicht aller möglichen Befehle für die Konsole finden Sie in der Windows-Befehle-Referenz, welche alle Befehle ab Windows 8.1, Windows 10 bis zum aktuellen Windows Server auflistet und viele Detailerklärungen zu den Befehlen gibt.
Für den tiefen Einstieg empfehlen wir zudem die Taschen-Bibliothek „Windows-Befehle für Server 2016 und Windows 10 – kurz & gut: Inklusive PowerShell-Alternativen“ (ISBN 978-3-96009-069-4) vom O'Reilly Verlag, welche uns als Nachschlagewerk bisher gute Dienste erwiesen hat.
4. So können Sie Batch-Dateien manuell oder automatisiert ausführen lassen
Fertige Batchdateien können Sie ganz einfach über einen Doppelklick starten. Ein weiterer Weg ist über die Kommandozeile CMD. Wechseln Sie hier in den Pfad der Batch-Datei und führen Sie diese mit dem Namen "batchdatei.bat" aus.
Verwenden Sie allerdings Befehle, welche Administratorrechte benötigen, sollten Sie die Batchdatei bereits mit Admin-Rechten starten.
Sie können Verknüpfungen zu einer Batch-Datei auch in den Autostart-Ordner für den Benutzer legen. Damit wird die Batch-Datei beim Anmelden des Nutzers ausgeführt. Der Pfad lautet
C:\Users\BENUTZERNAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Sie können den Pfad einfach öffnen, indem Sie erst Windows-Taste + R drücken, woraufhin der "Ausführen"-Dialog startet. Geben Sie dann shell:startup ein. Es öffnet sich jetzt der Autostart-Ordner des Benutzers.
Für regelmäßig wiederkehrende Aufgaben wie Backups bietet es sich an, die Aufgabenplanung so zu konfigurieren, dass er die Batch-Datei regelmäßig, beispielsweise wöchentlich, ausführt. Starten Sie über START -> Ausführen -> Aufgabenplanung diese und erstellen Sie einen neue, einfache Aufgabe.
Als Trigger wählen Sie wöchentlich
und wählen als Aktion "Programm starten". Hier geben Sie den Pfad zu der Batch-Datei an, welche ausgeführt werden soll.
5. Eine eigene Batch-Datei erstellen, verschiedene Anwendungsbeispiele
Wir haben für Sie in der Folge einige einfache Beispiele, wie sich Batch-Dateien in Windows sinnvoll einsetzen lassen, zusammengestellt. Beachten Sie bitte, dass die Batch-Dateien nicht ohne Anpassung auf anderen Systemen lauffähig sind. Die Beispiele dienen vielmehr als Anregung für eigene, individuelle Stapelverarbeitungsdateien.
Kopieren Sie die Texte in eine leere Textdatei und speichern Sie diese als "name.cmd" ab. Wie unter Punkt 4. beschrieben, können Sie die Batch-Dateien dann manuell oder automatisiert starten.
Eventuell müssen Sie die Pfadangaben ändern und anpassen. Sie finden im Internet darüber hinaus noch viele weitere Beispiele und Anregungen.
5.1. Sicherung eigener Dateien auf einen externen Datenträger
In unserem ersten Beispiel werden wir mit Xcopy Dateien kopieren. Der Befehl kopiert alle Ordner und Dateien unterhalb des Ordners "Eigene Dateien" auf unserem Laufwerk D in den Ordner Sicherung auf dem Laufwerk E.
REM Kopieren eines Ordners
XCOPY "d:\Eigene Dateien\*.*" "e:\Sicherung\" /E /C /H /Y /D
Der Parameter /e kopiert nicht leere Verzeichnisse und Unterverzeichnisse, der Parameter /c setzt auch bei einem Fehler den Kopiervorgang fort, der Parameter /y dagegen unterdrückt die Rückfrage, ob bestehende Dateien überschrieben werden sollen, /d kopiert nur neuere Dateien. Alle Parameter von Xcopy können Sie sich über Xcopy /? In der Kommandozeile CMD anzeigen lassen und lassen sich beliebig ergänzen, beispielsweise noch /v für eine Prüfung der geschriebenen Dateien über die Dateigröße.
5.2. Mit WakeOnLAN einen PC oder NAS aus dem Standby wecken
Wenn Sie ein NAS verwenden, welches Wake On LAN beherrscht, können Sie direkt beim Anmelden in Windows das Gerät aufwecken und brauchen nicht erst ein spezielles Tool des Herstellers dafür zu starten. Da Windows selbst kein WakeOnLAN über die Kommandozeile aufrufen kann, brauchen wir ergänzend das kleine, kostenlose Tool WakeUP!, Entpacken Sie die ausführbare Datei in einen Ordner und erstellen Sie darin die folgende Batch-Datei:
@echo off REM Serverwake.bat (weckt das NAS auf) wake.exe 00-11-32-33-04-43 192.168.1.255
Die Parameter hinter dem Wake-Befehl müssen Sie noch anpassen und beinhalten die MAC-Adresse und Broadcast-Adresse. Die MAC-Adresse können Sie sich über die Oberfläche im NAS in den Einstellungen oder oder den Router anzeigen lassen. Die Broadcast-Adresse ist von Adressraum des DHCP-Servers im Router abhängig. In unserem Beispiel vergibt dieser IP-Adressen von 192.168.1.2 bis 192.156.1.254.
Die Verknüpfung zur Batch-Datei haben wir im Autostart-Ordner von Windows 10 im Pfad C:\Users\BENUTZERNAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup hinterlegt.
5.3. Netzwerklaufwerke beim Anmelden verbinden
Netzwerklaufwerke kann man über den Windows-Explorer fest verbinden. Es gibt aber auch Anwendungsfälle, in denen man Laufwerke nur temporär verbinden oder diese wieder trennen möchte. Auch diese Funktion bietet die Kommandozeile über eine Batch-Datei mit dem Befehl net use.
Mit dem Befehl
net use z: \\NETZWERKPFAD\ORDNER
in einer Batch-Datei verbinden Sie den Ordner am Netzwerkpfad mit dem Buchstaben Sie können von dieser Batch-Datei eine Verknüpfung in den Autostart-Ordner von Windows legen, wie wir es unter Punkt 5.2 beschrieben haben.
Mit dem Befehl
net use z: \\NETZWERKPFAD\ORDNER /delete
wird das Netzwerklaufwerk wieder getrennt.
5.4. IP-Adressen auslesen
Mit der folgenden Batch-Datei können Sie sich die verwendeten IPv4- und IPv6-Adressen von Ihrem System anzeigen lassen.
@echo off REM IP-Adressen anzeigen ECHO Bitte warten... System wird ausgelesen ipconfig | findstr IPv4 ipconfig | findstr IPv6 PAUSE
5.5. PC-Cleaner und Datensicherung
Das folgende Beispiel ist etwas komplexer und bietet gleich mehrere Auswahlmöglichkeiten und soll beispielhaft verdeutlichen, wie Sie Abfragen einbauen, Sprungmarken nutzen und auch mit Variablen arbeiten können.
Sie können mit der Batch-Datei temporäre Dateien löschen und optional danach den PC herunterfahren oder neue Dateien aus dem Ordner "Dokumente" des aktuellen Nutzers sichern und wiederum optional den PC danach herunterfahren. Für die Sicherung der Dateien nutzen wir den bereits bei 5.1. beschriebenen Xcopy-Befehl. Statt fester Pfadangaben werden aber Variablen wie %HOMEDRIVE% und %HOMEPATH% verwendet. Zudem prüft die Batch-Datei vorab, ob ein Sicherungsordner für den Nutzer bereits besteht und legt diesen andernfalls automatisch an.
Sie können das Beispiel gerne um eigene Funktionen erweitern oder optimieren, indem Sie doppelt vorkommende Funktionen wie das Anlegen des Benutzerordners zur Sicherung oder den Shutdown über weitere Abfragen und Sprungmarken entschlacken. Zur besseren Übersicht und Verständnis haben wir uns aber für die folgende Variante entschieden:
@echo off :abfrage REM ++ Abfrage der Funktionen +++++++++++ cls echo +++++++++++++++++++++++++++++++++++++ echo +++ PC-Cleaner und Backup +++ echo +++++++++++++++++++++++++++++++++++++ echo. echo. echo. echo "t" eingeben, um Temp-Dateien zu loeschen echo "s" eingeben, um Temp-Dateien zu loeschen und Windows herunterfahren echo "b" eingeben, um Eigene Dateien zu sichern echo "x" eingeben, um Eigene Dateien zu sichern und Windows herunterfahren echo "e" eingeben, um diese Batch zu beenden echo. set /p eingabe=Ihre Auswahl: if /i '%eingabe%'=='t' goto deltemp if /i '%eingabe%'=='s' goto deltempshutdown if /i '%eingabe%'=='b' goto backup if /i '%eingabe%'=='x' goto backupshutdown if /i '%eingabe%'=='e' goto ende goto abfrage :deltemp Echo Temp-Dateien des Nutzers werden geloescht del /q /f /s %temp%\* Echo Temp-Dateien geloescht, bitte Taste druecken Pause goto abfrage :deltempshutdown Echo Temp-Dateien des Nutzers werden geloescht del /q /f /s %temp%\* Echo fertig, Shutdown startet Shutdown /s Goto Ende :backup REM Pruefung Backupordner IF NOT EXIST "d:\Sicherung\%USERNAME%" mkdir "d:\Sicherung\%USERNAME%" Echo Sicherung Eigener Dateien XCopy "%HOMEDRIVE%\%HOMEPATH%\Documents\*" "d:\Sicherung\%USERNAME%" /E /C /H /Y /D Echo Kopiervorgang beendet, bitte Taste druecken Pause goto abfrage :backupshutdown REM Pruefung Backupordner IF NOT EXIST "d:\Sicherung\%USERNAME%" mkdir "d:\Sicherung\%USERNAME%" Echo Sicherung Eigener Dateien XCopy "%HOMEDRIVE%\%HOMEPATH%\Documents\*" "d:\Sicherung\%USERNAME%" /E /C /H /Y /D Echo Kopiervorgang beendet, bitte Taste druecken Pause Echo Shutdown startet Shutdown /s Goto Ende :ende exit
6. Tutorial Batch Datei erstellen/Befehle mit Cmd ausführen
In dem folgenden Video bekommen Sie nochmals eine Einführung, wie Sie eine Batch-Datei unter Windows erstellen und Befehle über die Kommandozeile ausführen.