BATCH: Datum für Copy-Jobs aufbereiten

Es sind die kleinen Batch-Dateien, die einem Spass bereiten. Sie bieten großen Nutzen und erleichtern die Arbeit erheblich. Vor allem, wenn sie automatisiert ihren Dienst verrichten und der Anwender oder Administrator die Arbeit und ihre Existenz vergessen kann.

Das Datum und die Uhrzeit bereitet in der Batch-Verarbeitung große Probleme. über die Variable DATE und TIME kann zwar die Zeit abgefragt werden, doch Zugriff auf einzelne Teilbereiche des Ausgabestrings haben wir nicht.

Stunde ermitteln
Diese Ausgabe ist noch relativ einfach gelöst. Die Variable „hour“ wird über eine Art „substring“ über den Befehl „time“ bestückt und steht so dem Skript zur Verfügung.

set hour=%time:~0,2%

Der Zugriff auf weitere Teile wie die Minute, Sekunde oder ein zusammengesetzter Wert kann nach diesem Schema ebenfalls erzeugt werden.

Datum ermitteln
Nach der Vorgehensweise der oben besprochenen Stundenermittelung können wir auch das Datum ermitteln. Um ein zusammengesetztes Datum rückwärts beispielsweise für die Bezeichnung von Logfiles zu ermitteln, kann das Datum wie folgt ermittelt werden:

set datum = %date:~10,4%%date:~4,2%%date:~7,2%
echo %datum%

Probleme mit englischsprachigem Betriebsystem
Die oben aufgeführte „Substring-Methode“ führt beim Einsatz auf einem englischsprachigem Betriebsystem unweigerlich zu Problemen. Der Befehl muss dort angepasst werden. Wenn wir vor einer solchen Aufgabe stehen, sollten wir uns gleich einer eleganteren Methode der Zerlegung zuwenden. Wir zerlegen das Datum über eine For-Schleife und setzen die Teile wieder anhand einer Regel zu einem String namens CDATE zusammen:

REM *** Deutsches Betriebsystem. Liefert CDATE= YYYY-MM-DD
FOR /F „tokens=1,2,3,4 delims=/. “ %%a in (‚date/T‘) do set CDATE=%%d-%%c-%%b

REM *** Englishes Betriebsystem. Liefert CDATE= YYYY-MM-DD
FOR /F „tokens=1,2,3,4 delims=/. “ %%a in (‚date/T‘) do set CDATE=%%c-%%b-%%a

Wie sie sehen können, wird das Datum am Ende der For-Schleife per „set CDATE=%%c-%%b-%%a“ zusammengebaut. Hier können Sie den Bindestrich durch einen Punkt ersetzen oder gänzlich weglassen.

Wir testen das Ganze einfach einmal, indem wir den Inhalt des aktuellen Dateiverzeichnisses in ein Logfile mit dem Tagesdatum schreiben:

FOR /F „tokens=1,2,3,4 delims=/. “ %%a in (‚date/T‘) do set CDATE=%%d-%%c-%%b
dir  >> „c: emp\%CDATE%.log“

Schreibe einen Kommentar