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
![](https://images.gutefrage.net/media/default/user/14_nmmslarge.png?v=1551279448000)
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.
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
Das funktioniert wenn man es etwas abwandelt danke!
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
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
![](https://images.gutefrage.net/media/default/user/10_nmmslarge.png?v=1551279448000)
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
![](https://images.gutefrage.net/media/user/phiLue/1634123316471_nmmslarge__0_0_2013_2013_ca888f3b176ca5acd3ae6b4c10ab559b.png?v=1634123317000)
Ich würde versuchen diese mit einem regulärem Ausdruck zu überprüfen wenn die Formate wirklich fest stehen.
![](https://images.gutefrage.net/media/user/Suboptimierer/1443606504450_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1443606506000)
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
![](https://images.gutefrage.net/media/user/Suboptimierer/1443606504450_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1443606506000)
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/