Bu gibi durumlarda basit, standart bir programlama yaklaşımı kullanın: Bilinmeyen bir varlığı ayrıştırmak için büyük bir çaba harcamak yerine, geçerli yapılandırmayı kaydedin, bilinen bir duruma sıfırlayın, bilgileri çıkarın ve orijinal durumunu geri yükleyin. Yalnızca standart Windows kaynaklarını kullanın.
Özellikle, tarih ve saat biçimleri [MS definition] "değerleri": "sTimeFormat" ve "sShortDate" içindeki HKCU \ Control Panel \ International \ kayıt defteri anahtarında saklanır. Reg, tüm Windows sürümlerinde bulunan konsol kayıt defteri düzenleyicisidir. HKCU anahtarını değiştirmek için yükseltilmiş ayrıcalıklar gerekli değildir
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
Basit, basit ve tüm bölgeler için çalışmalıdır.
Anlamadığım nedenlerden ötürü, "sShortDate" değerini sıfırlamak bir konsol penceresinde hemen etkili olur, ancak çok benzer "sTimeFormat" değerini sıfırlamak yeni bir konsol penceresi açılana kadar ETKİNLEŞMEZ . Ancak, değiştirilebilen tek şey sınırlayıcıdır - basamak konumları sabittir. "HH" zaman belirtecinin baştaki sıfırların önüne geçmesi gerekiyor, ancak değil. Neyse ki, geçici çözümler kolaydır.