Windows 7 cmd'de sistem yerel ayarları nasıl alınır?


23

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:


17

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.


3
Bir komut satırında systeminfo çalıştırırken, ekrana birçok bilgi çıkar.
Aranacak

sistem bilgisi / FO csv | ConvertFrom-Csv | select * locale
Sadece bir öğrenci

@Ogrish Man: Bu bir Powershell komutu gibi görünüyor, ancak bana hiç çıktı vermiyor. Belki de başlıklar İngilizce değildir çünkü. systeminfo.exekendi başına çalışır, gWaldo’nın PS’deki cevabı gibi
mivk

9

Get-UICultureveya Get-HostPowerShell'de

(büyük harf isteğe bağlı)


0

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!        
   )
)

0

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 ).


0

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!


Lütfen bu cevabı önceki cevabınızla birleştirmeyi düşünün.
kbyrd

@Seagram - Bunun için teşekkürler - İngilizce (United Kingom) için çalıştığını onaylayabilirim:System Locale: en-gb;English (United Kingdom)
SteveR
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.