Cookies helfen bei der Bereitstellung von znilwiki. Durch die Nutzung von znilwiki erklärst du dich damit einverstanden, dass Cookies gespeichert werden. Weitere Informationen
 Aktionen

Windows:Batch / DOS-Box: aktuelles Datum und Uhrzeit für Datei- oder Verzeichnisnamen verwenden

Aus znilwiki

Zum Beispiel bei Dateisicherungen per Skript / Batch ist es praktisch, das aktuelle Datum und Uhrzeit in Batch-Dateien verwenden zu können.
Auch bei Ausgaben in Log-Dateien macht sich das gut.


1 Simpel-Ausgabe

Die 08/15 Ausgabe besteht aus dem Inhalt der beiden Umgebungsvariablen

%TIME%
%DATE%

Per echo in einer Eingabeaufforderung sieht das so aus:
Batch-DatumundUhrzeit-001.png

Wie Ihr seht habe ich auch gleich einen Ordner mit dem aktuellen Datum angelegt.
Leider geht das mit der Uhrzeit schon nicht mehr - da sind Doppelpunkte drin, die darf es in Dateinamen nicht geben.

Aber auch dafür gibt es eine Lösung - siehe nächsten Abschnitt:


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

Was leider in der aktuellen Hilfe praktisch nicht mehr zu finden ist: 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% 

Ein

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

gibt uns Datum und Uhrzeit in einer Verzeichnis- und Dateinamen kompatiblen Version aus - die dann schön nach Datum sortiert wird, mit

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

erstellen wir uns ein Verzeichnis damit:
Batch-DatumundUhrzeit-002.png

--Bernhard Linz (Diskussion) 12:20, 11. Mai 2012 (CEST)


3 Fehler durch Leerzeichen

Ich habe da gerade noch einen Fehler gefunden - 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##

Beim Datum ist es das selbe. Nun haben wir plötzlich Leerzeichen in den Dateinamen.
Lösung1: Die Namen in der Batch in " " packen und damit die Leerzeichen übergeben
Lösung2: 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##

er füllt die Leerzeichen mit der Zahl 0 !

Important.png
Hinweis: Das Umwandeln aller Leerzeichen in eine 0 funktioniert nur innerhalb einer Batch-Datei. Man kann es NICHT in der Eingabeaufforderung testen! Kopiert das Beispiel in eine Textdatei und speichert diese als .bat oder .cmd und ruf diese dann auf - dann geht es.

--Bernhard Linz (Diskussion) 01:48, 12. Mai 2012 (CEST)


4 Kommentare


Anonymer Benutzer #1

67 Monaten zuvor
Punktzahl 0++

Super Lösung, danke für den Tipp, vor allem auch das Umwandeln der Leerstelle in eine Null !

Günter

Anonymer Benutzer #2

64 Monaten zuvor
Punktzahl 0++
unter Windows 7 will das nicht mehr so recht funktionieren, das steht dann "set TEST= Missing operator"

Anonymer Benutzer #2

64 Monaten zuvor
Punktzahl 0++
sorry "missing operand"

BLinz

64 Monaten zuvor
Punktzahl 0++

Also ich habe das unter Windows 7 und unter Windows Server 2008 R2 ohne Probleme am laufen.

Das funktioniert nur innerhalb einer Batchdatei, nicht beim Schritt für Schritt ausführen in der Eingabeaufforderung

Wolfgang

13 Monaten zuvor
Punktzahl 0++

Unter Windows 10 versehe ich mit folgendem Ausdruck eine Datei mit Datum und Uhrzeit. Funktioniert einwandfrei.

rename Solardaten.csv "%DATE:~6,4%.%DATE:~3,2%.%DATE:~0,2%-%"Solardaten.csv

BLinz

13 Monaten zuvor
Punktzahl 0++
Die Aufwendige Lösung kommt ja auch nur durch die Leerzeichen-Geschichte zu Stande. Du lebst in deinem Beispiel damit :-)

Anonymer Benutzer #4

3 Monaten zuvor
Punktzahl 0++
Vielen Dank! :-)
Kommentar hinzufügen
znilwiki freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, trage deinen Namen oder deine Email-Adresse ein oder melde dich an. Du kannst das Feld auch einfach leer lassen.