W takich sytuacjach skorzystaj z prostego, standardowego podejścia programistycznego: Zamiast wkładać ogromny wysiłek w analizowanie nieznanego elementu, po prostu zapisz bieżącą konfigurację, zresetuj ją do znanego stanu, wyodrębnij informacje, a następnie przywróć pierwotny stan. Używaj tylko standardowych zasobów Windows.
W szczególności formaty daty i godziny są przechowywane pod kluczem rejestru HKCU \ Control Panel \ International \ w [definicji MS] „wartości”: „sTimeFormat” i „sShortDate”. Reg to edytor rejestru konsoli dołączany do wszystkich wersji systemu Windows. Podwyższone uprawnienia nie są wymagane do modyfikowania klucza HKCU
Prompt $N:$D $T$G
::Save current config to a temporary (unique name) subkey, Exit if copy fails
Set DateTime=
Set ran=%Random%
Reg copy "HKCU\Control Panel\International" "HKCU\Control Panel\International-Temp%ran%" /f
If ErrorLevel 1 GoTO :EOF
::Reset the date format to your desired output format (take effect immediately)
::Resetting the time format is useless as it only affect subsequent console windows
::Reg add "HKCU\Control Panel\International" /v sTimeFormat /d "HH_mm_ss" /f
Reg add "HKCU\Control Panel\International" /v sShortDate /d "yyyy_MM_dd" /f
::Concatenate the time and (reformatted) date strings, replace any embedded blanks with zeros
Set DateTime=%date%__%time:~0,2%_%time:~3,2%_%time:~6,2%
Set DateTime=%DateTime: =0%
::Restore the original config and delete the temp subkey, Exit if restore fails
Reg copy "HKCU\Control Panel\International-Temp%ran%" "HKCU\Control Panel\International" /f
If ErrorLevel 1 GoTO :EOF
Reg delete "HKCU\Control Panel\International-Temp%ran%" /f
Prosty, bezpośredni i powinien działać dla wszystkich regionów.
Z powodów, których nie rozumiem, resetowanie wartości „sShortDate” zaczyna obowiązywać natychmiast w oknie konsoli, ale resetowanie bardzo podobnej wartości „sTimeFormat” NIE działa, dopóki nie otworzy się nowe okno konsoli. Jednak jedyne, co można zmienić, to ogranicznik - pozycje cyfr są ustalone. Podobnie, token czasowy „HH” ma poprzedzać zera na początku, ale tak nie jest. Na szczęście obejścia są łatwe.