BATch Datei erstellen - CMD, BAT Befehle in Windows (DOS)
BATch-Befehle stammen aus dem DOS-Zeitalter und sind für bestimmte Einsätze auch heute noch ein sinnvolles Werkzeug, dennoch ist die Windows PowerShell ist für das Administrieren und Automatisierung von Aufgaben heute meist die bessere Wahl, siehe: Windows PowerShell
Die hier beschriebenen Befehle wurden unter Windows 2000/XP getestet, sind aber auch für Windows 10 / 11 gültig.
Help
Der Befehl "help" in der MS-DOS-Eingabeaufforderung verschafft einen Überblick über die verfügbaren Befehle. Mit dem Befehlsnamen und /?
können genauere Informationen zum jeweiligen Befehl angezeigt werde, z.B. xcopy /?
Einsatzgebiete von Batch Dateien
- Kopieraufgaben
- Dateien verschieben
- Netzlaufwerke verbinden
- Dateien / Verzeichnisse erstellen
- Text ausgeben
- Programme starten
- Anmeldeskript
...
Die Einsatzgebiete für Batch Dateien sind einfache Abläufe. Für komplexere Abläufe sind andere Skriptsprachen, wie zum Beispiel Powershell, überwiegend besser geeignet.
Batch Dateien erzeugen:
Eine BATch-Datei kann am einfachsten über den Editor, als Beispiel Notepad erstellt werden, indem als Fileendung ".cmd" oder ".bat" verwendet wird. (speichern unter: Dateiname.cmd, oder Dateiname.bat)
(Achtung: im Explorer muss bei Extras, Ordneroptionen, Ansicht, Erweiterungen bei bekannten Dateitypen ausblenden deaktiviert werden, ansonsten wird die Datei als irgendwas.cmd.txt abgespeichert; alternativ kann der Dateiname im Editor auch unter Anführungszeichen gestellt werden "irgendwas.cmd")
In die Datei können dann Befehle geschrieben werden, diese werden beim Starten der Datei ausgeführt.
Ein Video hierzu gibt es auf folgender Seite script-example.com Batch Datei Beispielvideo
Grundlegend: echo / echo off, pause Befehl:
Mit dem Befehl @echo off
, am Anfang der Batch-Datei, kann die Ausgabe der Befehlszeile unterdrückt werden, es wird dann nur das Ergebnis des Befehls ausgegeben.
Mit echo Anzeigetext kann ein beliebiger Text ausgegeben werden.
Der Pause-Befehl wartet auf einen beliebigen Tastendruck
Beispiel:
@echo off
echo Das ist eine Testdatei
pause
der Batch-Befehl gibt den Text: Das ist Testdatei aus und wartet anschließend auf einen Tastendruck
kleine Sicherungsaufgaben mit xcopy
Ordner sichern:
Beispiel zu xcopy
@echo off
xcopy c:\Eigene~1 d:\sicher /D /E /Y /I
pause
Parameter des xcopy-Befehles: /D
bedeutet nur neuere Dateien /E
Unterverzeichnisse mitnehmen /Y
Dateien ohne Nachfragen überschreiben /I
neuen Ordner anlegen, falls nicht vorhanden
Der Befehl in einer Batch-Datei kopiert alle neuen Dateien den Ordner d:\sicher
Als Ziel kann auch eine Netzwerkfreigabe eines anderen PCs verwendet werden:xcopy c:\Eigene~1 \\sicherpc\sicher /D /E /Y /I
oder bei Verwendung langer Dateinamen: (einfach zwischen Anführungszeichen setzen)xcopy "c:\Eigene Dateien" \sicherpc\sicher /D /E /Y /I
Du kannst die Datei auch in das Autostart-Verzeichnis geben, damit bei jedem Systemstart alles gesichert wird,
oder mit geplante Tasks Sicherungsjobs erstellen!
xcopy exclude
die Option exclude kann bestimmte Dateien oder Verzeichnisse ignorieren:
Beispiel: xcopy c:\Dokumente und Einstellungen z: /y /d /h /e /i /exclude:nocopy.txt
Für das Ignorieren wird für dieses Beispiel die Datei nocopy.txt benötigt. Die Datei muss sich dazu im selben Ordner befinden wie die Batch-Datei.
Als Inhalt können alle Dateien bzw. Ordner angeführt werden, die nicht kopiert werden sollen.
z.B.:
----------------
Temporary Internet Files
.tmp
----------------
.tmp heißt alle Dateien mit der Endung tmp, die angegebenen Ordner bzw. Dateien müssen jeweils in einer neuen Zeile stehen, der *-Platzhalter (so.* ; *.tmp) funktioniert nicht!
Variablen setzen:
Beispiel:
@echo off
set var=Variablenwert
echo %var%
pause
mit set var= kann der Variablen var jeder beliebige Wert, bzw. Text gegeben werden.
Windows Variablen:
Es gibt eine Reihe Variablen, die von Windows von Haus aus zur Verfügung stehen.
Einen Überblick darüber, welche Variablen gesetzt sind, gibt der Befehl set ohne weitere Option (also: Start, Ausführen, cmd, ... set)
Ausgegeben wird dann eine Liste aller zur Verfügung stehenden Variablen mit deren Inhalt
z.B. windir=c:\WINDOWS
USERNAME= dein Benutzername
oder USERPROFILE das gerade angemeldete Benutzerprofil.
Verwendet können die Variablen innerhalb von % werden: %USERPROFIL% oder %USERDOMAIN% also immer ein % vorher und ein % nach der Variablen (wie schon bei den selbst gesetzten Variablen)
springen:
Beispiel:
@echo off
:Start
echo bin in der Schleife
goto Start
mit goto springt die Batchverarbeitung an jede beliebige Stelle der Datei
TEST: existiert eine Datei?:
if exist %datei.txt goto springen
wenn die Datei datei.txt existiert, springt der Ablauf zu springen
Beispiel:
@echo off
if exist %datei.txt goto springen
echo Datei nicht gefunden!
goto ENDE
:springen
echo die Datei existiert!
:ENDE
Errorlevel:
Jeder Befehl gibt bestimmte errorlevel zurück:
meist bedeutet der errorlevel 1, dass der Befehl nicht erfolgreich war:
Beispiel:
@echo off
xcopy c:\so c:\so2
if errorlevel 1 goto error
goto ende
:error
echo das kopieren war nicht erfolgreich!
:ende
pause
In diesem Beispiel wird das Verzeichnis c:\so in c:\so2 kopiert,
wenn jetzt z.B. so nicht existiert, schreibt die Batch-Datei: Das Kopieren war nicht erfolgreich!
Eine 2te Datei erzeugen, ergänzen:
echo hallo > temp.txt
Diese Befehlszeile erzeugt eine temp.txt Datei und schreibt hallo rein! Wenn die Datei temp.txt schon existiert, wird der gesamte Inhalt der Datei überschrieben!
echo hallo >> temp.txt
Fügt den Text hallo zur temp.txt hinzu, d.h. bei jedem mal aufrufen des Befehls steht in temp.txt einmal mehr hallo drin,
der Inhalt der Datei bleibt erhalten!
Datum
set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%
echo %jahr%%monat%%tag%
erzeugt dann z.B.:20050921
FTP automatisieren:
Befehle: open
... Öffnet die FTP-Verbindung; benötigt: Server, Benutzername und Passwort put
... sendet eine Datei get
... lädt eine Datei herunter lcd
... Verzeichnis am Rechner wechseln cd
... Verzeichis am Server wechseln bye
... beendet die FTP-Verbindung
Für Bild- und Programmdateien musst du den Binär-Modus verwenden, für Text-Dateien den ASCII-Modus.
Beispiel:
OPEN www.ftpserver.at
benutzername
passwort
CD html
ASCII
PUT C:\eigene~1\homepage\index.htm
CD ..
CD bilder
BINARY
put C:\eigene~1\homepage\bilder\bild.gif bild.gif
bye
Erläuterung: Die Datei öffnet die FTP-Verbindung, wechselt in den ASCII- Modus (für Text-Dateien);
kopiert alle Datei index.htm auf den Server;
wechselt dann am Rechner in das Bildverzeichnis, schaltet in den BINARY - Modus und sendet die bild.gif- Datei!
In einer .ftp- Datei gespeichert, kann diese mit einer BATch-Datei folgendermaßen aufgerufen:
Aufruf der BATch-Datei:
ftp -s:dieftpdatei.ftp
Noch einfacher geht das Hochladen mit dem Commandline Tool curl
curl -T C:\eigene~1\homepage\index.htm --user USERNAME:PASSWORD
weiterführende Themen bzw. Anleitungen für Anfänger
siehe: Script Example Windows Batch
{{percentage}} % positiv
DANKE fĂĽr deine Bewertung!
Fragen / Kommentare
(sortiert nach Bewertung / Datum) [alle Kommentare(neueste zuerst)]
User: HEVY Perfekt ... super EinfĂĽhrung
super
Beitrag erstellt von anonym
User: Giuseppe wollte eine Skript für Daten an einer FTP Server Hochladen, aber bei mir hat es nicht klappt. könnten jemand mir helfen?
User: Nasuh Hallo, muss die Seriennummern aller unserer Notebooks per CMD Befehlt "wmic bios get serialnumber" auslesen. Wie kann ich das so zu sagen automatisieren, damit ich dieses Befehl nicht an über 200 Geräte immer manuell eingeben muss? Vielen Dank. LG Nasuh
User: Speed-ihh komm-zahl-es! Netter Post! Hätte mich nur gefreut, wäre das automatisierte ausführen von Programmen etwas genauer angesprochen worden. Ich möchte gerne ein Skript erstellen, womit es möglich ist, eine reihe von installern zu starten, die natürlich silent im hintergrund installieren. Ist natürlich praktisch bei Treiberinstallationen an PCs.
User: Carsten Hallo, vielen Dank für die tolle Seite :-) Ich möchte eine Batchdatei erstellen, die ich automatisiert mit dem Taskplaner regelmäßig laufen lassen. Dabei soll der Zielordner (Netzlaufwerk) erst vollständig geleert werden und anschließend der Inhalt eines lokalen Ordners vollständig in das Netzlaufwerk kopiert werden. Das Ganze soll laufen, ohne dass ein Benutzer angemeldet ist. Geht das überhaupt so??? Danke :-)
User: Anfänger Ich möchte ein entpacker.bat Datei herstellen für ROM Image zur entpacken.Es ist möglich?
User: Batc_erzeugen Ich möchte ein entpacken.bat für ROM I mage erstellen.Es ist möglich
User: ziemlich gutes Tutorial aber dennoch frage ich mich ob es möglich ist bei einem Textdokument gezielt die 3. Zeile zu löschen und dann dort etwas neues reinschreiben zwischen Zeile 2 und 3 eine neue hinzuzufügen.