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?
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:
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
.
systeminfo.exe
funziona da solo, come fa la risposta di gWaldo in PS
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!
)
)
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).
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!
System Locale: en-gb;English (United Kingdom)