如何在 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!
)
)