2012-09, Formatierung von Datum und Uhrzeit in *.BAT/*.CMD

Hallo,

viele von uns schreiben sich eigene Skripten um bestimmte Aufgaben zu automatisieren. Unter Windows kommen hier die Variablen %DATE% und %TIME% zum Einsatz.

Hier das Beispiel für das Datum

Mit ‘mkdir C:\%DATE%’ oder ‘echo “Beispieltext” >> %DATE%.txt’ ist dies auch ohne weiteres möglich.

Nur was nutzt ein Ordner oder eine Datei mit den folgendem Namen?

Ordner:     C:\03.01.2011
Datei:        C:\03.01.2011.txt

Eine alphabetische Sortierung würde jetzt ja zuerst nach den Tagen, dann nach den Monaten und danach nach den Jahren sortieren.

Beispiel:
Ordner1:    C:\03.01.2007
Ordner2:    C:\03.01.2008
Ordner3:    C:\03.01.2009
Ordner4:    C:\03.01.2010
Ordner5:    C:\03.02.2006

Da dies nicht unbedingt brauchbar ist sollte man die Datumsausgabe formatieren.

‘echo %DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%’
ergibt
2011-03-01

Was bedeutet dies jetzt?

‘echo %DATE:~6,4′ gibt ab der 6ten Stelle die nachfolgenden 4 Stellen des Inhalts der Variable ‘%DATE%’ aus. Wie an ‘%DATE:~0,2′ zu erkennen ist beginnt man bei ’0′ zu zählen.

In einer *.BAT/*.CMD-Datei könnte man dies so verwenden.

SET DATUM=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%
mkdir C:\%DATUM%_Logfiles
mkdir C:\%DATUM%_Dumps

Als Ergebnis hätte man folgende Ordner erstellt

C:\2011-01-03_Logfiles
C:\2011-01-03_Dumps

Hier das Beispiel für die Bearbeitung der Uhrzeit

‚echo %TIME%‘ gibt zum Beispiel folgende Uhrzeit aus

19:52:34,58

Wenn man die Uhrzeit in einen Dateinamen integrieren will ist dies natürlich auch nicht brauchbar. Doppelpunkte sind im Dateinamen unter Windows nunmal nicht erlaubt. Eine Idee wäre dann folgende Formatierung.

SET ZEIT=%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%

Dies ergibt lediglich folgende Ausgabe

19-52-34

Die Doppelpunkte wurden durch Bindestriche ersetzt und die Millisekundenangabe nach dem Komma wurde entfernt.

Beispiel für eine simple BATCH-Datei

Folgendes Beispiel zeigt einen möglichen Aufbau für ein kleines Skript.

SET DATUM=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%
SET ZEIT=%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%

mkdir C:\LogFiles\%DATUM%.txt

echo %ZEIT%,Beginn des Skriptes >> C:\LogFiles\%DATUM%.txt
Befehl1 >> C:\LogFiles\%DATUM%.txt
Befehl2 >> C:\LogFiles\%DATUM%.txt
Befehl3 >> C:\LogFiles\%DATUM%.txt
echo %ZEIT%,Ende des Skriptes >> C:\LogFiles\%DATUM%.txt

In der Textdatei ‚C:\LogFiles\2012-09-30.txt‘ steht dann folgender Inhalt

19-52-30, Beginn des Skriptes
Die Ausgaben von Befehl1
Die Ausgaben von Befehl2
Die Ausgaben von Befehl3
20-34-11,Ende des Skriptes

Comments are closed.