Batch Befehl Datum englisches oder deutsches Format erkennen

7 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
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.

drsnuggles82 
Fragesteller
 17.12.2014, 13:42

Das funktioniert wenn man es etwas abwandelt danke!

0

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