it-swarm-eu.dev

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

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?

23
Richard Knop

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.

18
Massimo

Get-UICulture ou Get-Host dans PowerShell

(capitalisation facultative)

10
gWaldo

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 futur CMD Windows à utiliser (comme indiqué dans SETX /? deuxième remarque).

Le script get_locale.cmd devient alors:

@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 n'importe quelle fenêtre new 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!

0
Seagram

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 sera imprimé à 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 États Unis Anglais)

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

En fait, vos propositions échouent, car elles reposent sur la recherche d'une chaîne (" Paramètres régionaux du système ") 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 (aucune commande d'exportation comme dans * nix).

0
Seagram