Windows: Batch/DOS: aktuelles Datum / Uhrzeit für Datei- oder Verzeichnis

Bei Dateisicherungen per Skript / Batch ist es praktisch, das aktuelle Datum und Uhrzeit in Batch-Dateien verwenden zu können.


  • Die 08/15 Ausgabe besteht aus dem Inhalt der beiden Umgebungsvariablen %TIME% %DATE%

Batch-DatumundUhrzeit-001.png

…. da sind Doppelpunkte drin, die darf es in Dateinamen nicht geben.


  • Getrennte Ausgabe von Tag, Monat, Jahr, Stunde, Minute und Sekunde

Windows kann die Ausgabe von Umgebungsvariablen formatieren.
Das können wir nutzen, um die Ausgabe von %TIME% und %DATE% in ihre Einzelteile zu zerlegen:

  • Jahr:  %date:~-4%
  • Monat:  %date:~-7,2%
  • Tag:  %date:~-10,2%
  • Stunden:  %time:~-11,2%
  • Minuten:  %time:~-8,2%
  • Sekunden:  %time:~-5,2%

Das gibt uns Datum und Uhrzeit in einer Verzeichnis- und Dateinamen kompatiblen Version aus.

%date:~-4%-%date:~-7,2%-%date:~-10,2%---%time:~-11,2%-%time:~-8,2%-%time:~-5,2%

Damit erstellen wir uns ein Verzeichnis:

mkdir %date:~-4%-%date:~-7,2%-%date:~-10,2%---%time:~-11,2%-%time:~-8,2%-%time:~-5,2%

Batch-DatumundUhrzeit-002.png


Fehler durch Leerzeichen

Die Uhrzeit oder das Datum ist bei den Zahlen von 1 bis 9 nur einstellig.
Wir bekommen also ein

echo ##%TIME%##
## 9:45:35,88##

und damit auch ein

echo =>%time:~-11,2%-%time:~-8,2%-%time:~-5,2%<=
## 9-45-35##

Nun haben wir plötzlich Leerzeichen in den Dateinamen.
Lösung: Aus allen Leerzeichen hinterher 0 – machen:

set TEST=%date:~-4%-%date:~-7,2%-%date:~-10,2%-%time:~-11,2%-%time:~-8,2%-%time:~-5,2% echo ##%TEST%##
 setlocal enabledelayedexpansion
 set TEST=!TEST:^ =0!
 setlocal disabledelayedexpansion
 echo ##%TEST%##

Ausgabe:

##2012-05-12- 1-47-00## ##2012-05-12-01-47-00##