Batch Befehl Datum englisches oder deutsches Format erkennen
Hallo
Suche eine Möglichkeit mittels einer batch Datei zu erkennen ob englisches oder deutsches datumsformat (dd.mm.yyyy oder m/d/yyyy) eingestellt ist.
Gruß Felix
7 Antworten
echo %date% | findstr "/" >nul 2>nul || set Sprache=Deutsch
if "%Sprache%" == "Deutsch" set Tag=%date:~0,2%
if "%Sprache%" == "Deutsch" set Monat=%date:~3,2%
if not "%Sprache%" == "Deutsch" set Tag=%date:~3,2%
if not "%Sprache%" == "Deutsch" set Monat=%date:~0,2%
set Jahr=%date:~5,4%
"findstr" sucht einen Schrägstrich im Datum. Falls der Befehl nicht erfolgreich ist ( || ) ist das Datum deutsch.
Das funktioniert wenn man es etwas abwandelt danke!
Das ganze ist für eine batch die in usa und Deutschland läuft und Deutschland ist das Format (dd.mm.yyyy) in usa ist das Format (mm/dd/yyyy) Real sieht es für heute dann sogar so aus (Mon 12/15/2014)
Egal wo die batch läuft es soll immer ein Dateiname mit dem aktuellen Datum erweitert werden also Datei_ddmmyyyy.txt
Das jeweilige ausrodeten läuft aber ich muss unterscheiden welches Format aktiv ist
Script ist etwas doof? Kann man da nicht irgendwie die Länge der %date Variable rausbekommen
Wenn lange gleich 8 ist es Deutsch sonst Englisch
Aber die länge ist auch Tricks raus zu bekommen
Ich würde versuchen diese mit einem regulärem Ausdruck zu überprüfen wenn die Formate wirklich fest stehen.
Also wenn dir ein VisualBasicScript reicht, dann kannst du das Format so auslesen:
Sub RegistryDateFormat()
Dim oShell
Dim sLangesDatum
Dim sKurzesDatum
Set oShell = CreateObject("WScript.Shell")
sLangesDatum = oShell.RegRead("HKEY_CURRENT_USER\Control Panel\International\sLongDate")
sKurzesDatum = oShell.RegRead("HKEY_CURRENT_USER\Control Panel\International\sShortDate")
if sLangesDatum = "" then _
sLangesDatum = oShell.RegRead("HKEY_USERS\.DEFAULT\Control Panel\International\sLongDate")
if sKurzesDatum = "" then _
sKurzesDatum = oShell.RegRead("HKEY_USERS\.DEFAULT\Control Panel\International\sShortDate")
MsgBox "Langes Datumsformat: " & sLangesDatum & vbCrLf & "Kurzes Datumsformat: " & sKurzesDatum
Set oShell = Nothing
End Sub
Hier findest du eine Anleitung, wie du die Registrierungsdatenbank von Windows mittels batch auslesen kannst: http://hannes-schurig.de/22/01/2014/batch-registry-werte-mit-und-ohne-leerzeichen-auslesen/