如何从 cmd 中找到当前的 Windows 语言?
Posted
技术标签:
【中文标题】如何从 cmd 中找到当前的 Windows 语言?【英文标题】:How can I find the current Windows language from cmd? 【发布时间】:2010-12-09 06:45:27 【问题描述】:我想为每种语言运行一个脚本。 我需要一种使用批处理文件来查找正在使用的操作系统语言的方法。 在 Windows XP 和 Windows 7 上。
【问题讨论】:
边界服务器故障问题。 您想要 UI 语言,对吗?不是语言环境? 【参考方案1】:不知道这在 Windows 7 上是否仍然有效,但在 Windows XP 中有效
reg query "hklm\system\controlset001\control\nls\language" /v Installlanguage
然后你可以解析输出。例如
0409 --> English
0407 --> German
【讨论】:
谢谢,抖动。这也适用于 Windows 7。你解决了我的问题。顺便说一句:040D --> 希伯来语感谢速度040C -->
法语; 0C0A -->
西班牙语。
检查此答案以了解数字代码和人类格式语言名称之间的更多匹配serverfault.com/a/310221
此注册表项仍存在于 Windows 10 中。所有语言代码 (LCID) 均可在此处找到:docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/…【参考方案2】:
您不能在 HKLM\SYSTEM\CurrentControlSet\Control\nls\language 下使用 InstallLanguage 因为这就是它所说的:安装语言 虽然您可以直接安装 Windows 的本地化版本,但这并不总是这样做,因为它不在我的 PC 上。而是应用语言包,这很好,但显示语言与安装语言不同。 此外,如果用户更改他的显示语言,InstallLanguage 将不会反映更改。并且可能会有更多的用户使用不同的显示语言。
当前用户显示语言HKCU\控制面板\桌面 首选UI语言
FOR /F "tokens=3" %%a IN ('reg query "HKCU\Control Panel\Desktop" /v PreferredUILanguages ^| find "PreferredUILanguages"') DO set UILanguage=%%a
echo User Display Language: %UILanguage%
本地机器语言、系统语言和用户语言之间存在差异。 BCD 语言也有单独的设置,用于恢复和启动管理器 本地机器
安装语言在安装时设置,永远不会改变 “HKLM\SYSTEM\CurrentControlSet\Control\nls\language”键的默认值也设置为相同的值。某些 InstallShield 安装程序错误读取此值,导致本地化 Windows 上显示英文界面。 如果您更改显示语言,新值将存储在
HKLM\SYSTEM\CurrentControlSet\Control\MUI\Settings PreferredUiLanguages
这将覆盖 HKLM\SYSTEM\CurrentControlSet\Control\nls\language 下的 InstallLanguage 值 值类型有混淆,而 InstallLanguage 是 LCID,PreferredUiLanguages 是 LCID 字符串。 然后将此语言报告为本地机器语言。这不是用户显示语言
系统语言这是系统用户的语言。 在用户登录之前,使用此语言。 这意味着它是欢迎屏幕和 OOBE 的语言。
HKEY_USERS\S-1-5-18\Control Panel\Desktop\MuiCached MachinePreferredUILanguages
还有一种 WMI 方法可以获取 OS 语言,但我没有测试你会得到哪些语言
wmic os 获取语言环境、操作系统语言、代码集
FOR /F "tokens=2 delims==" %%a IN ('wmic os get OSLanguage /Value') DO set OSLanguage=%%a
echo OS Language: %OSLanguage%
【讨论】:
1.wmic os get oslanguage
返回与 reg query "hklm\system\controlset001\control\nls\language" /v Installlanguage
(十六进制)相同的值(十进制)。 2. 如果没有安装首选语言,则 reg 查询 (/v PreferredUILanguages) 在 reg query "HKCU\Control Panel\Desktop" 上都会返回错误
和 reg query "HKLM\SYSTEM\CurrentControlSet\Control\MUI\Settings"
如果您的 reg 查询返回错误,则可以使用初始安装语言的完整解决方案。只是我的意见。【参考方案3】:
下面的代码解决了我的问题。它适用于 Windows Server 2003 和 Windows 7
FOR /F "tokens=3 delims= " %%G in ('reg query "hklm\system\controlset001\control\nls\language" /v Installlanguage') DO (
IF [%%G] EQU [0409] (
ECHO English install language detected
) ELSE (
ECHO Some other language detected
)
希望对你有帮助!
【讨论】:
最后少了一个 )【参考方案4】:使用“dism /online /get-intl”命令。
【讨论】:
您需要提升权限才能运行此命令行。【参考方案5】:在控制台 CMD 写入命令:
intl.cpl
【讨论】:
【参考方案6】:在cmd中:reg query "HKEY_CURRENT_USER\Keyboard Layout\Preload"
这会产生:
HKEY_CURRENT_USER\Keyboard Layout\Preload
2 REG_SZ 00000419
1 REG_SZ 00000809
像第一个答案一样,然后使用 this 或 this 站点解析最右边的数字
如果最左边的数字是当前使用的当前键盘语言的数字 1。
【讨论】:
【参考方案7】:在 cmd 上使用命令并搜索与您的查询相关联的英文单词。
示例:w32tm /query /peers >> somewhere.txt
#Peers: 1
Peer: ca.pool.ntp.org
State: Active
Time Remaining: 58.3260171s
Mode: 3 (Client)
Stratum: 3 (secondary reference - syncd by (S)NTP)
PeerPoll Interval: 17 (out of valid range)
HostPoll Interval: 10 (1024s)
第一行总是“peers”或“service not started”,所以如果用户使用的不是英语,脚本将找不到这个词,结果会返回 0。
【讨论】:
【参考方案8】:在 Windows 10 1903 中,当前用户的语言设置似乎在“HKCU\Control Panel\International\LocaleName”中找到
【讨论】:
【参考方案9】:在 Windows 中使用命令提示符有两种方法
第一
打开高架command prompt
键入以下命令dism /online /get-intl
第二
打开高架command prompt
键入以下命令systeminfo
这两项工作都取决于您的需要
【讨论】:
【参考方案10】:使用 powershell 并在 windows7 和 windows10 上测试(可能适用于 XP,但 powershell 在 XP 上不是本机)
无需提升命令提示符。
给出命令行执行的语法
powershell get-uiculture
或
powershell -NoProfile "Get-UICulture|select -ExpandProperty LCID"
或
最后一项仅适用于 windows10。
powershell [CultureInfo]::InstalledUICulture
学分/参考:
https://winaero.com/find-default-system-language-windows-10/ 和
may i know the difference between [cultureinfo]::InstalledUICulture and get-uiculture in powershell?
【讨论】:
以上是关于如何从 cmd 中找到当前的 Windows 语言?的主要内容,如果未能解决你的问题,请参考以下文章
使用 cmd.exe 或 PowerShell 或 Python 从 Windows 命名管道中读取
如何把windows系统默认字符集从GBK修改为GB2312?