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?
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?
Jawaban:
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.
systeminfo.exedengan sendirinya berfungsi, seperti halnya jawaban gWaldo di PS
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!
)
)
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).
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!
System Locale: en-gb;English (United Kingdom)