In situazioni come questa usa un approccio di programmazione semplice e standard: invece di dedicare un enorme sforzo all'analisi di un'entità sconosciuta, è sufficiente salvare la configurazione corrente, reimpostarla su uno stato noto, estrarre le informazioni e quindi ripristinare lo stato originale. Utilizzare solo risorse di Windows standard.
In particolare, i formati di data e ora sono memorizzati nella chiave di registro HKCU \ Control Panel \ International \ in [valori MS] "valori": "sTimeFormat" e "sShortDate". Reg è l'editor del registro della console incluso in tutte le versioni di Windows. Non sono richiesti privilegi elevati per modificare la chiave 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
Semplice, diretto e dovrebbe funzionare per tutte le regioni.
Per motivi che non capisco, il ripristino del valore "sShortDate" ha effetto immediato in una finestra della console, ma il ripristino del valore "sTimeFormat" molto simile NON ha effetto fino all'apertura di una nuova finestra della console. Tuttavia, l'unica cosa che può essere modificata è il delimitatore: le posizioni delle cifre sono fisse. Allo stesso modo, il token temporale "HH" dovrebbe anteporre gli zeri iniziali, ma non è così. Fortunatamente, le soluzioni alternative sono facili.