如何在 Windows 7 cmd 中获取系统区域设置?

如何在 Windows 7 cmd 中获取系统区域设置?

如何在 Windows 7 中获取系统区域设置?

我的意思是:cs_CZ.UTF-8

我尝试在命令行中输入“locale”,但在 Windows 中不起作用。有什么建议吗?

答案1

没有特定的命令 (或者至少,我不知道) 来获取此信息,但您可以在提供的命令中找到它systeminfo.exe

答案2

Get-UICulture或者Get-Host在 PowerShell 中

(可选大写)

答案3

事实上,你的建议失败了,因为它们依赖于搜索字符串(“系统区域设置“),它会根据当前语言环境而变化!在我的法语 Win10Pro 上,字符串是“区域制度选择“(带有重音字母,在 CMD 文件中很难正确处理)。

我做了一些测试,在我的系统上,似乎只有 systeminfo 输出中关于区域设置的行包含分号字符(“;”):

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)

基于此(在其他使用不同语言的系统上可能并非如此),我编写了以下代码获取区域设置脚本 :

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

我的脚本在我的系统上的运行结果是:

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)

但请注意,这三个环境变量仅存在于脚本内部,脚本结束后,它们不会在 CMD 环境中保留(不出口命令如 *nix)。

答案4

如果您需要实际语言环境有条件地在批处理文件中执行其他操作,您可以创建一个批处理文件(将文本文件保存为 .bat 扩展名),内容如下。作为起点,它将打印到命令提示符,例如“en-us”(无引号)您还可以使用变量 !VERBOSE_SYSTEM_LOCALE! 表示人类可读的语言环境,例如英语(美国)

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

相关内容