Wie bekomme ich das Gebietsschema des Systems in Windows 7 cmd?

23

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?

Richard Knop
quelle

Antworten:

17

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.

Massimo
quelle
3
Beim Ausführen von systeminfo in einer Befehlszeile werden viele Informationen auf dem Bildschirm ausgegeben. Die relevanten Informationen, nach denen gesucht werden muss, sind: Systemgebietsschema: en-us; Englisch (USA) Eingabegebietsschema: en-us; Englisch (USA)
djondal
systeminfo / FO csv | ConvertFrom-Csv | select * locale
Nur Anfänger
@Ogrish Man: Dies scheint ein Powershell-Befehl zu sein, aber es gibt mir keine Ausgabe. Vielleicht, weil die Überschriften nicht in Englisch sind. systeminfo.exean sich funktioniert das genauso wie gWaldos antwort in PS
mivk
9

Get-UICultureoder Get-Hostin PowerShell

(Großschreibung optional)

gWaldo
quelle
0

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!        
   )
)
Fitzciaran
quelle
0

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

Seagram
quelle
0

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!

Seagram
quelle
Bitte kombinieren Sie diese Antwort mit Ihrer vorherigen.
kbyrd
@Seagram - danke dafür - ich kann bestätigen, dass es für Englisch funktioniert (United Kingom):System Locale: en-gb;English (United Kingdom)
SteveR