Dans des situations comme celle-ci, utilisez une approche de programmation simple et standard: au lieu de dépenser un énorme effort pour analyser une entité inconnue, enregistrez simplement la configuration actuelle, réinitialisez-la à un état connu, extrayez les informations, puis restaurez l'état d'origine. Utilisez uniquement des ressources Windows standard.
Plus précisément, les formats de date et d'heure sont stockés sous la clé de registre HKCU \ Control Panel \ International \ dans [MS definition] "values": "sTimeFormat" et "sShortDate". Reg est l'éditeur de registre de console inclus avec toutes les versions de Windows. Des privilèges élevés ne sont pas requis pour modifier la clé 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
Simple, direct et devrait fonctionner pour toutes les régions.
Pour des raisons que je ne comprends pas, la réinitialisation de la valeur "sShortDate" prend effet immédiatement dans une fenêtre de console, mais la réinitialisation de la valeur "sTimeFormat" très similaire ne prend PAS effet jusqu'à ce qu'une nouvelle fenêtre de console soit ouverte. Cependant, la seule chose modifiable est le délimiteur - les positions des chiffres sont fixes. De même, le jeton de temps "HH" est censé ajouter des zéros non significatifs, mais ce n'est pas le cas. Heureusement, les solutions de contournement sont faciles.