Jak uzyskać ustawienia regionalne systemu w Windows 7 cmd?

23

Jak mogę uzyskać ustawienia regionalne systemu w Windows 7?

Mam na myśli coś takiego: cs_CZ.UTF-8

Próbowałem napisać „locale” w wierszu polecenia, ale to nie działa w systemie Windows. Jakieś sugestie?

Richard Knop
źródło

Odpowiedzi:

17

Nie ma określonego polecenia (a przynajmniej takiego, którego jestem świadom), aby uzyskać te informacje, ale możesz je znaleźć między tymi dostarczonymi przez systeminfo.exe.

Massimo
źródło
3
Podczas uruchamiania informacji systemowej w wierszu polecenia na ekranie pojawia się wiele informacji. Odpowiednie informacje do wyszukiwania to: Ustawienia regionalne systemu: en-us; Angielski (Stany Zjednoczone) Ustawienia regionalne: en-us; Angielski (Stany Zjednoczone)
djondal
systeminfo / FO csv | ConvertFrom-Csv | wybierz * lokalizacja
tylko uczeń
@Ogrish Man: Wydaje się, że jest to polecenie Powershell, ale nie daje mi żadnych wyników. Może dlatego, że nagłówki nie są w języku angielskim. systeminfo.exesamo w sobie działa, podobnie jak odpowiedź gWaldo w PS
mivk
9

Get-UICulturelub Get-Hostw PowerShell

(wielkie litery opcjonalne)

gWaldo
źródło
0

Jeśli potrzebujesz rzeczywistych ustawień regionalnych, aby warunkowo wykonywać inne czynności w pliku wsadowym, możesz utworzyć plik wsadowy (zapisać plik tekstowy jako rozszerzenie .bat) w następujący sposób. Jako punkt początkowy zostanie to wypisane do wiersza poleceń, na przykład „en-us” (bez cudzysłowów) Możesz także użyć zmiennej! VERBOSE_SYSTEM_LOCALE! dla ustawień regionalnych czytelnych dla człowieka, np. angielski (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!        
   )
)
fitzciaran
źródło
0

W rzeczywistości Twoje propozycje zawodzą, ponieważ polegają na wyszukiwaniu ciągu („ Ustawienia regionalne systemu ”), który zmienia się w zależności od bieżących ustawień regionalnych! W mojej francuskiej wersji Win10Pro ciąg ma postać „ Option régionale du système ” (z akcentowaną literą, co jest bardzo trudne w obsłudze w pliku CMD).

Przeprowadziłem pewne testy i wydaje się, że w MOIM systemie, wiersze o lokalizacji w wynikach systeminfo są jedynymi, które zawierają znak średnika („;”):

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)

Na tej podstawie (co może NIE być prawdą w innych systemach z różnymi językami), kodowałem ten skrypt get_locale.cmd :

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

Wynikiem mojego skryptu w MOIM systemie jest:

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)

Ostrzegamy jednak, że trzy zmienne środowiskowe istnieją tylko wewnątrz skryptu, NIE utrzymują się one w środowisku CMD po zakończeniu skryptu (brak polecenia eksportu, jak w * nix).

Seagram
źródło
0

Znowu ja.

Odkryłem niewielkie ulepszenie mojego skryptu. Za pomocą SETX można przechowywać zmienne środowiskowe w środowisku USER, aby móc z nich korzystać w przyszłości w systemie CMD Windows (jak podano w drugiej uwadze SETX /? ).

Następnie skrypt get_locale.cmd staje się:

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

W przypadku zmiennej VERBOSE_SYSTEM_LOCALE, ponieważ wartość może mieć kilka słów, konieczne jest zawinięcie %% C w cudzysłów, aby SETX otrzymał tylko jeden parametr zgodnie z oczekiwaniami.

Teraz w każdym nowym oknie CMD te wartości będą dostępne:

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)

PS: Byłoby miło, gdyby inni autorzy z innych krajów w innych językach mogli potwierdzić, że szukają średnika ”;” działa na swoich systemach Windows. Z góry dziękuję!

Seagram
źródło
Proszę rozważyć połączenie tej odpowiedzi z poprzednią.
kbyrd,
@Seagram - dziękuję za to - mogę potwierdzić, że działa w języku angielskim (United Kingom):System Locale: en-gb;English (United Kingdom)
SteveR