Làm cách nào để có được ngôn ngữ hệ thống trong Windows 7 cmd?


23

Làm cách nào tôi có thể lấy ngôn ngữ hệ thống trong Windows 7?

Ý tôi là một cái gì đó như: cs_CZ.UTF-8

Tôi đã thử viết "miền địa phương" trong dòng lệnh nhưng nó không hoạt động trong Windows. Bất kỳ đề xuất?

Câu trả lời:


17

Không có một lệnh cụ thể (hoặc ít nhất, không phải là một lệnh mà tôi biết) để có được thông tin này, nhưng bạn có thể tìm thấy nó giữa những lệnh được cung cấp bởi systeminfo.exe.


3
Khi chạy systeminfo trên một dòng lệnh, rất nhiều thông tin được xuất ra màn hình. Thông tin liên quan cần tìm là: Hệ thống địa điểm: en-us; Tiếng Anh (Hoa Kỳ) Địa điểm đầu vào: en-us; Tiếng Anh (Hoa Kỳ)
djondal

systeminfo / FO csv | ConvertFrom-Csv | chọn * ngôn ngữ
Chỉ là người học

@Ogrish Man: Đây có vẻ là một lệnh Powershell, nhưng nó không cho tôi đầu ra. Có lẽ bởi vì các tiêu đề không phải bằng tiếng Anh. systeminfo.exetự nó hoạt động, cũng như câu trả lời của gWaldo trong PS
mivk

9

Get-UICulturehoặc Get-Hosttrong PowerShell

(viết hoa tùy chọn)


0

Nếu bạn cần ngôn ngữ thực tế có điều kiện để làm những việc khác trong tệp bó, bạn có thể tạo tệp bó (lưu tệp văn bản dưới dạng .bat mở rộng) bằng cách sau. Là một điểm bắt đầu, điều này sẽ in ra dấu nhắc lệnh, ví dụ: "en-us" (không có dấu ngoặc kép) Bạn cũng có thể sử dụng biến! VerBOSE_SYIUS_LOCALE! cho ngôn ngữ có thể đọc được của con người, ví dụ như tiếng Anh (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

Trên thực tế, các đề xuất của bạn không thành công, vì chúng dựa vào việc tìm kiếm một chuỗi (" Vị trí hệ thống ") thay đổi tùy thuộc vào ngôn ngữ hiện tại! Trên Win10Pro tiếng Pháp của tôi, chuỗi là " Tùy chọn régionale du système " (với chữ có dấu, rất khó xử lý đúng trong tệp CMD).

Tôi đã thực hiện một số thử nghiệm và dường như, trên hệ thống MY, các dòng về miền địa phương trong đầu ra systeminfo là những dòng duy nhất chứa ký tự dấu hai chấm (";"):

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)

Dựa trên điều đó (có thể KHÔNG đúng trên các hệ thống khác với các ngôn ngữ khác nhau), tôi đã mã hóa tập lệnh get_locale.cmd này :

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

Kết quả của tập lệnh của tôi trên hệ thống MY là:

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)

Tuy nhiên, được cảnh báo rằng ba biến môi trường chỉ tồn tại bên trong tập lệnh, chúng KHÔNG tồn tại trong môi trường CMD sau khi tập lệnh kết thúc (không có lệnh xuất như trong * nix).


0

tôi một lần nữa

Tôi phát hiện ra một sự tăng cường nhẹ cho kịch bản của tôi. Sử dụng SETX, người ta có thể lưu trữ các biến môi trường vào môi trường USER để sử dụng Windows Windows trong tương lai (như đã nêu trong SETX /? Nhận xét thứ hai).

Sau đó, tập lệnh get_locale.cmd trở thành:

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

Đối với biến VERBOSE_SYIUS_LOCALE, vì giá trị có thể dài vài từ, nên bắt buộc phải bọc %% C vào dấu ngoặc kép để SETX chỉ nhận được một tham số như mong đợi.

Bây giờ, trong bất kỳ cửa sổ CMD mới nào , các giá trị này sẽ có sẵn:

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)

Tái bút: Thật tuyệt nếu những người đóng góp từ các quốc gia khác có ngôn ngữ khác có thể xác nhận rằng đang tìm kiếm dấu chấm phẩy ';' hoạt động trên hệ thống Windows của họ. Cảm ơn trước!


Vui lòng xem xét kết hợp câu trả lời này với câu trả lời trước của bạn.
kbyrd

@Seagram - cảm ơn vì điều này - Tôi có thể xác nhận rằng nó hoạt động tốt cho tiếng Anh (United Kingom):System Locale: en-gb;English (United Kingdom)
SteveR
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.