Windows 7 cmdでシステムロケールを取得する方法は?


23

Windows 7でシステムロケールを取得するにはどうすればよいですか?

私は次のようなものを意味します:cs_CZ.UTF-8

コマンドラインで「ロケール」を書き込もうとしましたが、Windowsでは機能しません。助言がありますか?

回答:


17

この情報を取得するための特定のコマンドはありません(少なくとも、私が知っているコマンドはありません)が、提供されてsysteminfo.exeいるコマンドの中から見つけることができます。


3
コマンドラインでsysteminfoを実行すると、多くの情報が画面に出力されます。検索する関連情報は次のとおりです。システムロケール:en-us;英語(米国)入力ロケール:en-us;英語(米国)
djondal

systeminfo / FO csv | ConvertFrom-Csv | select * locale
単なる学習者

@Ogrish Man:これはPowershellコマンドのようですが、出力はありません。たぶん、ヘッダーが英語ではないからです。systeminfo.exe自身の作品で、としてPSにgWaldoの答えをして
mivk


0

バッチファイルで他の処理を条件付きで実行するために実際のロケールが必要な場合は、次を使用してバッチファイルを作成(テキストファイルを.bat拡張子として保存)できます。開始点として、これはコマンドプロンプトに出力されます。たとえば、「en-us」(引用符なし)変数!VERBOSE_SYSTEM_LOCALE!も使用できます。人間が読めるロケール(英語(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

実際、現在のロケールに応じて変化する文字列(「システムロケール」)の検索に依存しているため、提案は失敗します。私のフランス語Win10Proでは、文字列は「オプションRegionaleもデュSYSTEME(CMDファイルで適切に処理するために非常に困難であるアクセント付き文字、と)」。

私はいくつかのテストを行いましたが、MYシステムでは、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
    )
)

MYシステムでのスクリプトの結果は次のとおりです。

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)

ただし、3つの環境変数はスクリプト内にのみ存在し、スクリプトの終了後はCMD環境に保持されないことに注意してください(* nixのようなエクスポートコマンドはありません)。


0

またね

スクリプトが少し強化されていることを発見しました。SETX を使用すると、将来の CMD Windowsで使用するために、環境変数をUSER環境に保存できます(SETX /?の 2番目の説明で述べたように)。

次に、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変数の場合、値は数ワードの長さである可能性があるため、%% Cを引用符にラップして、SETXが期待どおりに1つのパラメーターのみを受け取るようにする必要があります。

これで、新しい 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)

PS:他の言語を使用する他の国からの他の貢献者がセミコロン「;」を探していることを確認できたらいいですね。Windowsシステムで動作します。前もって感謝します!


この回答と以前の回答を組み合わせることを検討してください。
kbyrd

@シーグラム-これに感謝-英語(United Kingom)で機能することを確認できます:System Locale: en-gb;English (United Kingdom)
SteveR
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.