¿Cómo obtener la configuración regional del sistema en Windows 7 cmd?

23

¿Cómo puedo obtener la configuración regional del sistema en Windows 7?

Me refiero a algo como: cs_CZ.UTF-8

Intenté escribir "locale" en la línea de comando pero eso no funciona en Windows. ¿Alguna sugerencia?

Richard Knop
fuente

Respuestas:

17

No hay un comando específico (o al menos, ninguno que yo sepa) para obtener esta información, pero puede encontrarlo entre los proporcionados por systeminfo.exe.

Massimo
fuente
3
Cuando se ejecuta systeminfo en una línea de comando, se emite mucha información a la pantalla. La información relevante que debe buscar es: Configuración regional del sistema: en-us; inglés (Estados Unidos) Configuración regional de entrada: en-us; inglés (Estados Unidos)
djondal
systeminfo / FO csv | ConvertFrom-Csv | select * locale
Solo un alumno
@Ogrish Man: Este parece ser un comando de Powershell, pero no me da salida. Quizás porque los encabezados no están en inglés. systeminfo.exepor sí solo funciona, al igual que la respuesta de gWaldo en PS
mivk
9

Get-UICultureo Get-Hosten PowerShell

(capitalización opcional)

gWaldo
fuente
0

Si necesita la configuración regional real para hacer otras cosas condicionalmente en un archivo por lotes, puede crear un archivo por lotes (guardar un archivo de texto como extensión .bat) con lo siguiente. Como punto de partida, esto se imprimirá en el símbolo del sistema, por ejemplo, "en-us" (sin comillas) ¡También puede usar la variable! VERBOSE_SYSTEM_LOCALE! para el entorno legible para humanos, por ejemplo, inglés (Estados Unidos)

@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
fuente
0

De hecho, sus propuestas fallan, ¡porque se basan en la búsqueda de una cadena (" Configuración regional del sistema ") que cambia según la configuración regional actual! En mi Win10Pro francés, la cadena es " Option régionale du système " (con letra acentuada, que es muy difícil de manejar correctamente en un archivo CMD).

He hecho algunas pruebas, y parece que, en MI sistema, las líneas sobre la configuración regional en la salida del sistema son las únicas que contienen un carácter de punto y coma (";"):

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)

Basado en eso (que puede NO ser cierto en otros sistemas con diferentes idiomas), codifiqué este script 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
    )
)

El resultado de mi script en MI sistema es:

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)

Sin embargo, tenga en cuenta que las tres variables de entorno solo existen dentro del script, NO persisten en el entorno CMD después de que finaliza el script (sin comando de exportación como en * nix).

Seagram
fuente
0

yo otra vez.

Descubrí una ligera mejora en mi guión. El uso de SETX uno puede almacenar variables de entorno en el entorno del USUARIO para que las use CMD Windows en el futuro (como se indica en SETX /? Segunda observación).

Entonces el script get_locale.cmd se convierte en:

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

Para la variable VERBOSE_SYSTEM_LOCALE, dado que el valor posiblemente tenga varias palabras, es necesario ajustar %% C entre comillas para que SETX reciba solo un parámetro como se esperaba.

Ahora, en cualquier nueva ventana CMD, estos valores estarán disponibles:

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)

PD: Sería bueno si otros contribuyentes de otros países con otros idiomas pudieran confirmar que buscan punto y coma ';' funciona en sus sistemas Windows. ¡Gracias por adelantado!

Seagram
fuente
Considere combinar esta respuesta con la anterior.
kbyrd
@Seagram - gracias por esto - puedo confirmar que funciona para inglés (United Kingom):System Locale: en-gb;English (United Kingdom)
SteveR