Man lernt nie, aus. In dem Fall betrifft es ein wenig die Batch-Programmierung mit CMD.EXE.
Für einen Batch, der einen Teil eine Datensicherung eines Hyper-V Servers machen sollte benötigte ich ein Verzeichnis mit dem Tagesdatum, aber im Format YYYY-MM-DD. %date war mir bekannt und auf unseren Rechner liefert das aber, DD.MM.YYYY.
Ein wenig Suche im Netz brachte mich zu Substring-Funktionen bei der Variablenersetzung, die ich noch gar nicht kannte. Hängt man hinter eine Variable Doppelpunkt und Tilde kann man Startposition und Länge eines Substrings angeben.
Entsprechend ist der Batch also ganz schnell geschrieben 😉 :
SETLOCAL
SET TargetDir=D:\BackupHyperV %date:~6,4%.%date:~3,2%.%date:~0,2%
MD "%TargetDir%"
Eklig ist bei %date% und %time% halt, dass die sprachabhängig sind. D.h., wenn der Server mit einem z.B. englischen statt deutschen Windows läuft, geht’s dann plötzlich nimmer :-/
Aber auch dafür gibt es Lösungen. Die einfachste ist es nachzuschauen, was für Trennzeihen verwendet werden und wo die Trennzeichen sitzen.
Sucht man nach „batch date locale“ findet man auch Lösungen.
Auch trotz Powershell und Konsorten benutze auch ich lieber simple BAT Skripte für kleine Aufgaben.
Da muss nicht erst .NET Gedöns geladen werden, das funzt unter jeder OS Version und geht einfach schneller von der Hand – meistens 😉