如何从 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 语言?的主要内容,如果未能解决你的问题,请参考以下文章

windowscmd启动程序不确定程序默认路径

使用 cmd.exe 或 PowerShell 或 Python 从 Windows 命名管道中读取

如何把windows系统默认字符集从GBK修改为GB2312?

如何查看windows系统当前时间

如何把windows10系统默认字符集从gbk修改为gb2312?

如何把windows10系统默认默认字符集从gbk修改为gb2312