Batch-Dateien für Fortgeschrittene - Teil 1

Ich möchte in einer kleinen Artikelserie ein paar fortgeschrittene Anwendungsmöglichkeiten für Batch-Dateien aufzeigen. Ich habe diese Beispiel alle unter Windows 7 getestet, aber ich gehe davon aus, dass sie jeweils auch unter Windows 10, Windows 8 und Windows XP funktionieren.

Datum und Uhrzeit in der Eingabeaufforderung (cmd)

Mit

date

erhält man

Aktuelles Datum: 22.11.2019
Geben Sie das neue Datum ein: (TT-MM-JJ)

Das ist in bestimmten Fällen unbefriegend, denn zum einen will amn ja das dateum gar nicht ändern, zum anderen könnte auch der Text vor dem Datum störend sein. Es gibt aber eine einfache Abhilfe, denn  mit

date /T

erhält man einfach nur noch

22.11.2019

Das funktioniert auch mit dem Befehl für die Uhrzeit, denn mit

time /T

erhält man einfach nur noch

13:22

ohne Text und Korrekturaufforderung.

Andere Datumsformate - Datum und Uhrzeit als Dateiname

Windows verwendet für die Ausgabe des Datums automatisch die in Deutschland üblich Form. Das ist in vielen Fällen auch sinnvoll. Anders sieht es jedoch aus, wenn man das Datum als Bestandteil eines Dateinamens verwenden will. Wenn man beispielsweise Dateinamen dieser Form

2019-11-21-blabla.txt
2019-11-22-blabla.txt

hat, dann lassen sich solche Dateinamen auch sehr schön sortieren. Das kann man mit einer Art Formatierung erreichen:

echo %date:~6%-%date:~3,2%-%date:~0,2%

liefert dann:

2019-11-22

Das sieht doch schon sehr gut aus. Mit

echo %date:~6%-%date:~3,2%-%date:~0,2%>%date:~6%-%date:~3,2%-%date:~0,2%-blabla.txt

wird eine Datei 2019-11-22-blabla.txt erstellt, die 2019-11-22 enthält.

 

Quellen
https://de.wikibooks.org/wiki/Batch-Programmierung:_Programmierungshilfen

Im Detail

Dem weniger erfahrenen Nutzer mag die Anweisung, vor allem die Nutzung der Tilde (~) etwas kryptisch erscheinen, daher noch einmal im Detail:

%date:~6%

bedeutet:nimm von der Zeichenkette die date liefert, alle Zeichen nach dem 6.Zeichen. Ähnlich

%date:~3,2%

bedeutet:nimm von der Zeichenkette, die date liefert, zwei Zeichen nach dem 3.Zeichen. Und schließlich bedeutet

%date:~0,2%

nimm von der Zeichenkette, die date liefert, zwei Zeichen ab Beginn.

Erweiterung mit Uhrzeit

Angenommen, man benötigt Dateinamen, die nicht nur das Datum sondern auch die Uhrzeit enthalten, z.B. weil an einem Tag mehrere Dateien erzeugt werden, dann kann man folgendes eingeben:

echo %date:~6%-%date:~3,2%-%date:~0,2%-um-%time:~0,2%-%time:~3,2%-%time:~6,2%>%date:~6%-%date:~3,2%-%date:~0,2%-%time:~0,2%-%time:~3,2%-%time:~6,2%-blabla.txt

Da ein Doppelpunkt (:) in Dateinamen nicht erlaubt ist, wurde auch die Uhrzeit aufgeteilt und durch einen Bindestrich (-) ersetzt. Für den Text, der in die Datei geschrieben wird, wäre dies nicht erforderlich gewesen.