Manchmal möchten Sie, dass Batch-Programme auch Meldungen am Bildschirm ausgeben. Dafür ist der Befehl echo
da. Probieren Sie es aus:
echo Hallo Welt!
Mit echo
kann auch das aktuelle Datum oder die aktuelle Uhrzeit ausgegeben werden. Probieren Sie es aus:
echo %DATE% echo %TIME%
Normalerweise werden beim Abarbeiten eines Batch-Programmes alle Befehle, die ausgeführt werden, auch am Bildschirm ausgegeben. Das kann praktisch sein, weil Sie dann immer wissen, was das Batch-Programm gerade tut. Probieren Sie das Batch-Programm aus:
echo Sicherung läuft ... echo Sicherung beendet. pause
Es kann aber auch unübersichtlich werden. Wenn Sie möchten, können Sie das mit @echo off
ausschalten. Probieren Sie das Batch-Programm aus, und vergleichen Sie die Ausgabe mit dem vorherigen Programm:
@echo off echo Sicherung läuft ... echo Sicherung beendet. pause
Nochmal zurück zu echo %DATE%
: Wenn Ihnen die Ausgabe Tag.Monat.Jahr nicht gefällt und Sie lieber Jahr-Monat-Tag hätten, weil nämlich Datei- und Ordnernamen in diesem Format richtig sortiert werden, können Sie das auch bewerkstelligen. Es schaut zugegebenermaßen etwas kompliziert aus. Die Erklärung folg später, Sie können es aber auch einfach nur kopieren und in Ihr eigenes Programm einbauen:
echo %DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%
Die Erklärung: Das Jahr beginnt an der Position 6 und ist 4 Zeichen lang, der Monat beginnt an der Position 3 und ist 2 Zeichen lang, der Tag beginnt an der Position 0 und ist 2 Zeichen lang:
0123456789 tt.mm.jjjj
Mit dem Befehl set
können Sie einer Variablen, deren Namen Sie beliebig wählen, eine Zeichenfolge zuordnen. Probieren Sie es aus:
set MeinOrdner=C:\Users\maxmuster\Desktop echo %MeinOrdner%
Beachten Sie den Unterschied zwischen echo %MeinOrdner%
und echo MeinOrdner
!
Der Grund, warum wir die Variable MeinOrdner
verwenden, ist der, dass dieser Pfad im Batch-Programm öfter verwendet wird. Es wäre ganz schlechter Stil, die Pfadangabe C:\Users\maxmuster\Desktop
öfter zu verwenden, denn wenn Sie eines Tages den Pfad ändern möchten, müssen Sie das an mehreren Stellen tun, und die Wahrscheinlichkeit ist hoch, dass Sie dabei eine Stelle vergessen, und dann arbeitet Ihr Batch-Progamm fehlerhaft. Durch set MeinOrdner=C:\Users\maxmuster\Desktop
haben Sie den Pfad nur ein einer einzigen Stelle festgelegt, und brauchen ihn daher auch nur an einer Stelle ändern.
Wir haben gelernt, dass Versionensicherung eine wichtige Sicherungsstrategie bei Dateikorruption ist. Dazu wäre es praktisch, wenn man automatisch einen Ordner anlegen könnte, der das heutige Datum trägt. Die Mittel dazu haben wir bereits gelernt:
Zuerst wird ein Ordnername zusammengebaut und in einer Variable namens Sicherungsordner
gespeichert. Damit steht der Ordnername bzw. Pfad für verschiedene weitere Aktionen zur Verfügung, z.B. Erstellen mit md
, hineinwechseln mit cd
:
set Sicherungsordner=Sicherung_%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2% md %Sicherungsordner% cd %Sicherungsordner% pause
Wir nehmen an, dieses Batch-Progamm befindet sich auf dem Laufwerk, auf das die Sicherungskopien kommen sollen (z.B. USB-Stick oder Laufwerk M:) und bereits im richtigen Ordner. Alternativ können Sie als Sicherungsordner
auch einen absoluten Pfad angeben.
Hier ein Beispiel für ein einigermaßen praxistaugliches Batch-Programm für eine Versionensicherung.
Statt copy
wird hier xcopy
mit der Option /s
für 'subdirectories' verwendet, das heißt, es werden auch alle Unterordner mit kopiert.
Passen Sie das Programm an Ihre Bedürfnisse an, und achten Sie darauf, wo Sie absolute und wo relative Pfadangaben einsetzen.
@echo off set KopierenVon=C:\Users\maxmuster\Desktop set Sicherungsordner=Sicherung_%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2% md %Sicherungsordner% echo ===================================================== echo Sichern der Dateien von: %KopierenVon% echo in den Sicherungsordner: %Sicherungsordner% echo ----------------------------------------------------- xcopy %KopierenVon% %Sicherungsordner% /s echo ----------------------------------------------------- echo Sicherung ist beendet. Bitte kontrollieren Sie im echo Sicherungsordner: %Sicherungsordner% echo ob die Sicherung vollstaendig ist. echo ----------------------------------------------------- pause