Bagaimana cara mendapatkan sistem lokal di Windows 7 cmd?

23

Bagaimana saya bisa mendapatkan lokal sistem di Windows 7?

Maksud saya sesuatu seperti: cs_CZ.UTF-8

Saya mencoba menulis "lokal" di baris perintah tapi itu tidak berhasil di Windows. Ada saran?

Richard Knop
sumber

Jawaban:

17

Tidak ada perintah khusus (atau setidaknya, tidak ada yang saya sadari) untuk mendapatkan informasi ini, tetapi Anda dapat menemukannya di antara yang disediakan oleh systeminfo.exe.

Massimo
sumber
3
Saat menjalankan systeminfo pada baris perintah, banyak informasi ditampilkan ke layar. Informasi yang relevan untuk dicari adalah: Sistem Lokal: en-us; Inggris (Amerika Serikat) Input Lokal: en-us; Inggris (Amerika Serikat)
djondal
systeminfo / FO csv | ConvertFrom-Csv | select * locale
Just a learner
@Ogrish Man: Ini sepertinya perintah Powershell, tetapi tidak memberi saya hasil. Mungkin karena tajuknya tidak dalam bahasa Inggris. systeminfo.exedengan sendirinya berfungsi, seperti halnya jawaban gWaldo di PS
mivk
9

Get-UICultureatau Get-Hostdi PowerShell

(huruf kapital opsional)

gWaldo
sumber
0

Jika Anda membutuhkan lokal aktual untuk melakukan hal-hal lain dalam file batch Anda dapat membuat file batch (simpan file teks sebagai ekstensi .bat) dengan berikut ini. Sebagai titik awal, ini akan dicetak ke prompt perintah, misalnya, "en-us" (tanpa tanda kutip). Anda juga dapat menggunakan variabel! VERBOSE_SYSTEM_LOCALE! untuk lokal yang dapat dibaca manusia mis. Bahasa Inggris (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
sumber
0

Faktanya, proposal Anda gagal, karena mereka bergantung pada pencarian string (" Sistem Lokal ") yang berubah tergantung pada lokal saat ini! Pada Win10Pro bahasa Perancis saya, string adalah " Option régionale du système " (dengan huruf beraksen, yang sangat sulit untuk ditangani dengan benar dalam file CMD).

Saya telah melakukan beberapa pengujian, dan tampaknya, pada sistem MY, bahwa garis-garis tentang lokal dalam output systeminfo adalah satu-satunya yang mengandung karakter semi-colon (";"):

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)

Berdasarkan itu (yang mungkin TIDAK benar pada sistem lain dengan bahasa yang berbeda), saya memberi kode pada skrip get_locale.cmd ini :

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

Hasil skrip saya pada sistem MY adalah:

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)

Berhati-hatilah, bagaimanapun, bahwa ketiga variabel lingkungan hanya ada di dalam script, mereka tidak bertahan dalam lingkungan CMD setelah script berakhir (tidak ada ekspor perintah seperti di * nix).

Seagram
sumber
0

saya lagi.

Saya menemukan sedikit peningkatan pada skrip saya. Menggunakan setX satu dapat menyimpan variabel lingkungan ke lingkungan PENGGUNA untuk masa depan CMD Windows untuk digunakan (sebagaimana tercantum dalam setX /? Komentar detik).

Maka skrip get_locale.cmd menjadi:

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

Untuk variabel VERBOSE_SYSTEM_LOCALE, karena nilainya panjangnya mungkin beberapa kata, maka diperlukan untuk membungkus %% C menjadi tanda kutip sehingga SETX hanya menerima satu parameter seperti yang diharapkan.

Sekarang, di jendela CMD baru , nilai-nilai ini akan tersedia:

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: Akan lebih baik jika kontributor lainnya dari negara lain dengan bahasa lain bisa mengkonfirmasi bahwa mencari semi-kolon ';' bekerja pada sistem Windows mereka. Terima kasih sebelumnya!

Seagram
sumber
Harap pertimbangkan untuk menggabungkan jawaban ini dengan yang sebelumnya.
kbyrd
@Seagram - terima kasih untuk hal ini - Saya dapat mengkonfirmasikan bahwa itu workds untuk bahasa Inggris (United Kingom):System Locale: en-gb;English (United Kingdom)
Stever