ISO-Datum in Windows Batch-Files

3. Juni 2010 at 22:52

Wer unter Windows mit Batch-Files Scriptet, dürfte die Variablen %time% und %DATE% kennen, die die Uhrzeit sowie das aktuelle Datum im lokalen Format „dd.mm.yyyy“ zurückgeben.

Manchmal möchte man Dateien oder Verzeichnisse nach dem aktuellen Datum benennen, z.B. Logfiles, Zip-Dateien oder ein Backup-Verzeichnis für das tägliche Backup.

set dirname="C:Backup-%DATE%"
mkdir %dirname%

Einen großen Nachteil hat dieser Weg: Beim alphabetischen Anordnen im Windows-Explorer ist der 20. Mai vor dem 31. Januar. Der einfachte Weg ist die Verwendung des ISO-Formats JJJJ-MM-TT, also zuerst Jahr, dann Monat, dann Tag. So wird immer erst nach dem Größten (Jahr), zum Ende nach dem Kleinsten (Tag) sortiert.

Leider bietet die Windows Commandline ein solches Format nicht an, das läßt sich aber leicht korrigieren: Wir nehmen einfach aus %DATE% die nötigen Stellen heraus und basteln ein eigenes Format:

set TAG=%date:~-10,2%
set MONAT=%date:~-7,2%
set JAHR=%date:~-4%
set ISODATE=%JAHR%-%MONAT%-%TAG%

Fertig ist unser neues Datum %ISODATE%, das wir nun statt %DATE% verwenden:

set dirname="C:Backup-%ISODATE%"
mkdir %dirname%