Wie kann ich das Gebietsschema in Windows 7 abrufen?
Ich meine so etwas wie: cs_CZ.UTF-8
Ich habe versucht, "locale" in die Befehlszeile zu schreiben, aber das funktioniert unter Windows nicht. Irgendwelche Vorschläge?
Wie kann ich das Gebietsschema in Windows 7 abrufen?
Ich meine so etwas wie: cs_CZ.UTF-8
Ich habe versucht, "locale" in die Befehlszeile zu schreiben, aber das funktioniert unter Windows nicht. Irgendwelche Vorschläge?
Antworten:
Es gibt keinen bestimmten Befehl (oder zumindest keinen, den ich kenne), um diese Informationen abzurufen, aber Sie können ihn zwischen denen von finden systeminfo.exe
.
systeminfo.exe
an sich funktioniert das genauso wie gWaldos antwort in PS
Wenn Sie das tatsächliche Gebietsschema benötigen, um andere Aufgaben in einer Batch-Datei bedingt ausführen zu können, können Sie eine Batch-Datei (speichern Sie eine Textdatei mit der Erweiterung .bat) wie folgt erstellen. Als Ausgangspunkt wird dies an der Eingabeaufforderung ausgegeben, zum Beispiel "en-us" (keine Anführungszeichen). Sie können auch die Variable! VERBOSE_SYSTEM_LOCALE! für das vom Menschen lesbare Gebietsschema, zB Englisch (USA)
@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!
)
)
Tatsächlich schlagen Ihre Vorschläge fehl, da sie auf der Suche nach einer Zeichenfolge (" Systemgebietsschema ") beruhen, die sich je nach aktuellem Gebietsschema ändert! Auf meinem französischen Win10Pro lautet die Zeichenfolge " Option régionale du système " (mit akzentuiertem Buchstaben, der in einer CMD-Datei sehr schwer zu handhaben ist).
Ich habe einige Tests durchgeführt, und es scheint, dass auf MEINEM System die Zeilen über das Gebietsschema in der systeminfo-Ausgabe die einzigen sind, die ein Semikolon-Zeichen (";") enthalten:
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)
Basierend darauf (was auf anderen Systemen mit anderen Sprachen möglicherweise NICHT zutrifft) habe ich dieses Skript get_locale.cmd codiert :
@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
)
)
Das Ergebnis meines Skripts auf MEINEM System ist:
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)
Beachten Sie jedoch, dass die drei Umgebungsvariablen nur innerhalb des Skripts vorhanden sind. Sie verbleiben NICHT in der CMD-Umgebung, nachdem das Skript beendet wurde (kein Exportbefehl wie in * nix).
ich wieder.
Ich habe eine leichte Verbesserung meines Skripts entdeckt. Unter Verwendung von SETX kann man Umgebungsvariablen in einer USER-Umgebung speichern, damit zukünftige CMD-Windows sie verwenden können (wie in SETX /? Zweite Bemerkung angegeben).
Dann wird das Skript 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
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
)
)
Für die Variable VERBOSE_SYSTEM_LOCALE ist es erforderlich, %% C in Anführungszeichen zu setzen, damit SETX erwartungsgemäß nur einen Parameter empfängt, da der Wert möglicherweise mehrere Wörter lang ist.
In jedem neuen CMD-Fenster sind nun folgende Werte verfügbar:
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: Es wäre schön, wenn andere Mitwirkende aus anderen Ländern mit anderen Sprachen bestätigen könnten, dass sie nach einem Semikolon suchen. ';' funktioniert auf ihren Windows-Systemen. Danke im Voraus!
System Locale: en-gb;English (United Kingdom)