¿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?
¿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?
Respuestas:
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
.
systeminfo.exe
por sí solo funciona, al igual que la respuesta de gWaldo en PS
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!
)
)
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).
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!
System Locale: en-gb;English (United Kingdom)