Comment obtenir les paramètres régionaux du système dans Windows 7 cmd?

23

Comment obtenir les paramètres régionaux du système dans Windows 7?

Je veux dire quelque chose comme: cs_CZ.UTF-8

J'ai essayé d'écrire «locale» dans la ligne de commande mais cela ne fonctionne pas sous Windows. Aucune suggestion?

Richard Knop
la source

Réponses:

17

Il n'y a pas de commande spécifique (ou du moins, pas à ma connaissance) pour obtenir ces informations, mais vous pouvez les trouver entre celles fournies par systeminfo.exe.

Massimo
la source
3
Lors de l'exécution de systeminfo sur une ligne de commande, de nombreuses informations sont affichées à l'écran. Les informations pertinentes à rechercher sont les suivantes: Paramètres régionaux du système: en-us; anglais (États-Unis) Paramètres régionaux d'entrée: en-us; anglais (États-Unis)
djondal
systeminfo / FO csv | ConvertFrom-Csv | sélectionnez * locale
Juste un apprenant
@Ogrish Man: Cela semble être une commande Powershell, mais cela ne me donne aucune sortie. Peut-être parce que les en-têtes ne sont pas en anglais. systeminfo.exepar lui-même fonctionne, tout comme la réponse de gWaldo dans PS
mivk
9

Get-UICultureou Get-Hostdans PowerShell

(capitalisation facultative)

gWaldo
la source
0

Si vous avez besoin des paramètres régionaux réels pour effectuer d'autres tâches de manière conditionnelle dans un fichier de commandes, vous pouvez créer un fichier de commandes (enregistrer un fichier texte sous l'extension .bat) avec ce qui suit. Comme point de départ, cela s'imprimera à l'invite de commande, par exemple, "en-us" (sans guillemets) Vous pouvez également utiliser la variable! VERBOSE_SYSTEM_LOCALE! pour les paramètres régionaux lisibles par l'homme, par exemple l'anglais (États-Unis)

@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
la source
0

En fait, vos propositions échouent, car elles reposent sur la recherche d'une chaîne (" System Locale ") qui change en fonction des paramètres régionaux actuels! Sur mon Win10Pro français, la chaîne est " Option régionale du système " (avec une lettre accentuée, ce qui est très difficile à gérer correctement dans un fichier CMD).

J'ai fait quelques tests, et il semble, sur mon système, que les lignes concernant les paramètres régionaux dans la sortie systeminfo sont les seules à contenir un caractère point-virgule (";"):

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)

Sur la base de cela (qui peut ne pas être vrai sur d'autres systèmes avec des langues différentes), j'ai codé ce 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
    )
)

Le résultat de mon script sur MON système est:

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)

Soyez averti, cependant, que les trois variables d'environnement n'existent qu'à l'intérieur du script, elles ne persistent PAS dans l'environnement CMD après la fin du script (pas de commande d' exportation comme dans * nix).

Seagram
la source
0

moi encore.

J'ai découvert une légère amélioration de mon script. En utilisant SETX, on peut stocker des variables d'environnement dans l'environnement USER pour les futures fenêtres CMD à utiliser (comme indiqué dans SETX /? Deuxième remarque).

Ensuite , le get_locale.cmd scénario devient:

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

Pour la variable VERBOSE_SYSTEM_LOCALE, étant donné que la valeur est peut-être longue de plusieurs mots, il est nécessaire de mettre %% C entre guillemets afin que SETX ne reçoive qu'un seul paramètre comme prévu.

Maintenant, dans toute nouvelle fenêtre CMD, ces valeurs seront 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)

PS: Ce serait bien si d'autres contributeurs d'autres pays avec d'autres langues pouvaient confirmer que la recherche de points-virgules ';' fonctionne sur leurs systèmes Windows. Merci d'avance!

Seagram
la source
Veuillez envisager de combiner cette réponse avec la précédente.
kbyrd
@Seagram - merci pour cela - je peux confirmer que cela fonctionne pour l'anglais (United Kingom):System Locale: en-gb;English (United Kingdom)
SteveR