Windows 7'de sistem yerel ayarlarını nasıl alabilirim?
Gibi bir şey demek istiyorum: cs_CZ.UTF-8
Komut satırında "yerel" yazmayı denedim, ancak bu Windows'ta çalışmıyor. Baska öneri?
Windows 7'de sistem yerel ayarlarını nasıl alabilirim?
Gibi bir şey demek istiyorum: cs_CZ.UTF-8
Komut satırında "yerel" yazmayı denedim, ancak bu Windows'ta çalışmıyor. Baska öneri?
Yanıtlar:
Bu bilgiyi almak için belirli bir komut (ya da en azından bildiğim kadarıyla) yok, ancak bunu tarafından sağlananlar arasında bulabilirsiniz systeminfo.exe
.
systeminfo.exe
kendi başına çalışır, gWaldo’nın PS’deki cevabı gibi
Bir toplu iş dosyasında koşullu olarak başka şeyler yapmak için gerçek yerel ayarlara ihtiyacınız varsa, aşağıdakilerle bir toplu iş dosyası oluşturabilirsiniz (bir metin dosyasını .bat uzantısı olarak kaydedin). Başlangıç noktası olarak bu komut istemine basılacaktır, örneğin, "en-us" (tırnak işaretleri olmadan)! Değişkenini de kullanabilirsiniz! VERBOSE_SYSTEM_LOCALE! okunabilir yerel halk için örneğin İngilizce (UnitedStates)
@echo off
setlocal EnableDelayedExpansion
FOR /F "delims==" %%G IN ('systeminfo.exe') Do (
set input=%%G
for /l %%a in (1,1,100) do if "!input:~-1!"==" " set input=!input:~0,-1!
IF "!input:~0,13!"=="System Locale" (
set answer=!input:~15!
set answer=!answer: =!
set VERBOSE_SYSTEM_LOCALE=!answer:*;=!
call set SYSTEM_LOCALE_WITH_SEMICOLON=%%answer:!VERBOSE_SYSTEM_LOCALE!=%%
set SYSTEM_LOCALE=!SYSTEM_LOCALE_WITH_SEMICOLON:~0,-1!
echo !SYSTEM_LOCALE!
)
)
Aslında, teklifleriniz başarısız oluyor, çünkü geçerli yerel ayara bağlı olarak değişen bir dize (" Sistem Yerel Ayarı ") aramaya güveniyorlar ! Fransız Win10Pro'mda, " Option régionale du système " dizesi (bir CMD dosyasında düzgün şekilde kullanılması çok zor olan aksanlı harflerle).
Bazı testler yaptım ve öyle görünüyor ki, MY sisteminde, systeminfo çıktısındaki yerel ayar hakkındaki satırların noktalı virgül karakter içeren tek satır olduğu (";"):
24/09/2017 17:18:43,23 | C:\CMD ()
> systeminfo | findstr ;
Option régionale du système: fr;Français (France)
Paramètres régionaux d'entrée: fr;Français (France)
Buna bağlı olarak (farklı dillerdeki diğer sistemlerde doğru olmayabilir), bu get_locale.cmd komut dosyasını kodladım :
@echo off
setlocal EnableDelayedExpansion
FOR /F "delims==" %%A IN ('systeminfo.exe ^| findstr ";"') do (
FOR /F "usebackq tokens=2-3 delims=:;" %%B in (`echo %%A`) do (
set VERBOSE_SYSTEM_LOCALE=%%C
REM Removing useless leading spaces ...
FOR /F "usebackq tokens=1 delims= " %%D in (`echo %%B`) do (
set SYSTEM_LOCALE=%%D
)
set SYSTEM_LOCALE_WITH_SEMICOLON=!SYSTEM_LOCALE!;
set | findstr /I locale
REM No need to handle second line, quit after first one
goto :EOF
)
)
MY sistemimdeki senaryomun sonucu:
24/09/2017 17:18:45,31 | C:\CMD ()
> get_locale.cmd
SYSTEM_LOCALE=fr
SYSTEM_LOCALE_WITH_SEMICOLON=fr;
VERBOSE_SYSTEM_LOCALE=Français (France)
Bununla birlikte, üç ortam değişkeninin sadece betiğin içinde olduğu konusunda uyarılırlar, betiğin sona ermesinden sonra CMD ortamında kalmazlar ( * nix'te olduğu gibi verme komutu yoktur ).
yine ben.
Senaryomda ufak bir gelişme buldum. SETX'i kullanmak, gelecekteki CMD Windows'un kullanması için ortam değişkenlerini KULLANICI ortamına kaydedebilir ( SETX /? İkinci notunda belirtildiği gibi ).
Sonra get_locale.cmd betiği olur:
@ECHO OFF
SETLOCAL EnableDelayedExpansion
FOR /F "delims==" %%A IN ('systeminfo.exe ^| findstr ";"') DO (
FOR /F "usebackq tokens=2-3 delims=:;" %%B IN (`echo %%A`) DO (
SET VERBOSE_SYSTEM_LOCALE=%%C
setx VERBOSE_SYSTEM_LOCALE "%%C" 1>NUL
REM Removing useless leading spaces ...
FOR /F "usebackq tokens=1 delims= " %%D IN (`echo %%B`) DO (
SET SYSTEM_LOCALE=%%D
setx SYSTEM_LOCALE %%D 1>NUL
)
SET SYSTEM_LOCALE_WITH_SEMICOLON=!SYSTEM_LOCALE!;
setx SYSTEM_LOCALE_WITH_SEMICOLON !SYSTEM_LOCALE!; 1>NUL
SET | findstr /I locale
REM No need to handle second line, quit after first one
GOTO :EOF
)
)
VERBOSE_SYSTEM_LOCALE değişkeni için, değer muhtemelen birkaç kelime uzunluğunda olduğundan, %% C'nin tırnak işaretleri içine alınması gerekir, böylece SETX beklendiği gibi yalnızca bir parametre alır.
Şimdi, herhangi bir yeni CMD penceresinde, bu değerler mevcut olacaktır:
16/12/2017 2:00:46 | C:\Users\Seagram ()
>set | findstr /i locale
SYSTEM_LOCALE=fr
SYSTEM_LOCALE_WITH_SEMICOLON=fr;
VERBOSE_SYSTEM_LOCALE=Français (France)
Not: Diğer ülkelerden diğer dillere sahip diğer katılımcıların, yarı-kolon aramanın doğru olduğunu teyit etmeleri iyi olurdu ';' Windows sistemlerinde çalışır. Şimdiden teşekkürler!
System Locale: en-gb;English (United Kingdom)