Come ottenere le impostazioni internazionali del sistema in Windows 7 cmd?


23

Come posso ottenere le impostazioni internazionali del sistema in Windows 7?

Intendo qualcosa del tipo: cs_CZ.UTF-8

Ho provato a scrivere "locale" nella riga di comando ma non funziona in Windows. Eventuali suggerimenti?

Risposte:


17

Non esiste un comando specifico (o almeno non di cui sono a conoscenza) per ottenere queste informazioni, ma puoi trovarle tra quelle fornite da systeminfo.exe.


3
Quando si esegue systeminfo su una riga di comando, molte informazioni vengono visualizzate sullo schermo. Le informazioni rilevanti da cercare sono: Impostazioni locali di sistema: en-us; Inglese (Stati Uniti) Impostazioni locali di input: en-us; Inglese (Stati Uniti)
djondal

systeminfo / FO csv | ConvertFrom-Csv | seleziona * locale
Solo uno studente il

@Ogrish Man: questo sembra essere un comando Powershell, ma non mi dà output. Forse perché le intestazioni non sono in inglese. systeminfo.exefunziona da solo, come fa la risposta di gWaldo in PS
mivk,

9

Get-UICultureo Get-Hostin PowerShell

(capitalizzazione facoltativa)


0

Se è necessario che le impostazioni locali effettive eseguano in modo condizionale altre cose in un file batch, è possibile creare un file batch (salvare un file di testo come estensione .bat) con quanto segue. Come punto di partenza, questo verrà stampato sul prompt dei comandi, ad esempio "en-us" (senza virgolette). Puoi anche usare la variabile! VERBOSE_SYSTEM_LOCALE! per le impostazioni locali leggibili dall'uomo, ad esempio inglese (Stati Uniti)

@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

In effetti, le tue proposte falliscono, perché si basano sulla ricerca di una stringa (" Impostazioni internazionali di sistema ") che cambia in base alle impostazioni internazionali correnti! Sul mio Win10Pro francese, la stringa è " Option régionale du système " (con lettera accentata, che è molto difficile da gestire correttamente in un file CMD).

Ho fatto alcuni test e sembra, sul mio sistema, che le righe sulla localizzazione nell'output di systeminfo siano le uniche a contenere un carattere punto e virgola (";"):

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)

Sulla base di ciò (che potrebbe NON essere vero su altri sistemi con lingue diverse), ho codificato questo 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
    )
)

Il risultato del mio script sul mio sistema è:

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)

Si noti, tuttavia, che le tre variabili di ambiente esistono solo all'interno dello script, NON persistono nell'ambiente CMD al termine dello script (nessun comando di esportazione come in * nix).


0

ancora io.

Ho scoperto un leggero miglioramento nella mia sceneggiatura. Utilizzando SETX è possibile archiviare le variabili di ambiente nell'ambiente USER per l'uso futuro di CMD Windows (come indicato nella seconda osservazione SETX /? Seconda).

Quindi lo script get_locale.cmd diventa:

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

Per la variabile VERBOSE_SYSTEM_LOCALE, poiché il valore è probabilmente lungo più parole, è necessario racchiudere tra virgolette %% C in modo che SETX riceva solo un parametro come previsto.

Ora, in qualsiasi nuova finestra CMD, questi valori saranno disponibili:

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: Sarebbe bello se altri collaboratori di altri paesi con altre lingue potessero confermare che la ricerca di punti e virgola ";" funziona sui loro sistemi Windows. Grazie in anticipo!


Ti preghiamo di considerare di combinare questa risposta con la tua precedente.
kbyrd,

@Seagram - grazie per questo - posso confermare che funziona per l'inglese (Regno Unito):System Locale: en-gb;English (United Kingdom)
SteveR
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.