Windows 7 cmd에서 시스템 로캘을 얻는 방법?


23

Windows 7에서 시스템 로캘을 얻으려면 어떻게해야합니까?

cs_CZ.UTF-8과 같은 의미입니다.

명령 행에 "locale"을 쓰려고했지만 Windows에서는 작동하지 않습니다. 어떤 제안?

답변:


17

이 정보를 얻는 특정 명령 (또는 적어도 내가 아는 명령)은 없지만에서 제공하는 명령 사이에서 찾을 수 있습니다 systeminfo.exe.


3
명령 행에서 systeminfo를 실행하면 많은 정보가 화면에 출력됩니다. 찾을 관련 정보는 다음과 같습니다. 시스템 로캘 : en-us; 영어 (미국) 입력 로캘 : en-us; 영어 (미국)
djondal

systeminfo / FO csv | ConvertFrom-Csv | select * locale
단지 학습자

@Ogrish Man : Powershell 명령 인 것 같지만 출력이 없습니다. 헤더가 영어가 아니기 때문일 수 있습니다. systeminfo.exePS에서 gWaldo의 답변과 마찬가지로 그 자체로 작동합니다
mivk

9

Get-UICulture또는 Get-HostPowerShell에서

(자본 옵션)


0

배치 파일에서 다른 작업을 조건부로 수행하기 위해 실제 로케일이 필요한 경우 다음을 사용하여 배치 파일 (텍스트 파일을 .bat 확장자로 저장)을 작성할 수 있습니다. 시작점으로 명령 프롬프트에 인쇄됩니다 (예 : "en-us"(따옴표 없음))! VERBOSE_SYSTEM_LOCALE! 사람이 읽을 수있는 로케일 용 예 : 영어 (미국)

@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

실제로 제안 은 현재 로캘에 따라 변경 되는 문자열 ( " 시스템 로캘 ")을 검색하므로 실패합니다 . 내 프랑스어 Win10Pro에서 문자열은 " Option régionale du système "입니다 (강조 문자 사용, CMD 파일에서 제대로 처리하기가 매우 어렵습니다).

몇 가지 테스트를 수행 한 결과 내 시스템에서 systeminfo 출력의 로캘에 대한 줄은 세미콜론 문자 ( ";")를 포함하는 유일한 줄인 것 같습니다.

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)

이를 기반으로 (다른 언어를 사용하는 다른 시스템에서는 그렇지 않을 수 있음)이 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
    )
)

내 시스템에서 내 스크립트의 결과는 다음과 같습니다.

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)

그러나 세 가지 환경 변수는 스크립트 내부에만 존재하며 스크립트가 종료 된 후 CMD 환경에서 유지되지 않습니다 ( * nix에서와 같은 내보내기 명령 없음 ).


0

다시 나.

스크립트가 약간 향상되었습니다. SETX를 사용하면 향후 CMD Windows에서 사용할 수 있도록 환경 변수를 USER 환경에 저장할 수 있습니다 ( SETX /? 두 번째 설명 참조).

그러면 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
        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 변수의 경우 값의 길이가 몇 단어 일 수 있으므로 SETX가 예상 한대로 하나의 매개 변수 만 받도록 %% C를 따옴표로 묶어야합니다.

이제 CMD 창에서 다음 값을 사용할 수 있습니다.

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)

추신 : 다른 언어를 가진 다른 국가의 다른 기고자들이 세미콜론 ';'을 찾는 것을 확인할 수 있다면 좋을 것입니다. Windows 시스템에서 작동합니다. 미리 감사드립니다!


이 답변을 이전 답변과 결합하는 것을 고려하십시오.
kbyrd

@Seagram-감사합니다-영어 (United Kingom)에서 작동 함을 확인할 수 있습니다.System Locale: en-gb;English (United Kingdom)
SteveR
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.