Batch file 批处理命令,用于检查当前使用的系统语言(不是默认语言)

Batch file 批处理命令,用于检查当前使用的系统语言(不是默认语言),batch-file,cmd,Batch File,Cmd,我可以使用哪个批处理命令来检测当前使用的系统语言(不是默认语言) 我有检查默认系统语言的代码,并根据检测到的语言是波兰语还是另一种=英语,转到单独的代码: @echo关闭 对于/F“tokens=2 delims==”%%l IN('wmic os get OSLanguage/Value'),请设置OSLanguage=%%l 如果%OSLanguage%==1045转到波兰语 如果%o语言%NEQ 1045转到L_英语 :L_波兰 检测到回波抛光 暂停 出口 :L_英语 检测到回声英语 暂停

我可以使用哪个批处理命令来检测当前使用的系统语言(不是默认语言)

我有检查默认系统语言的代码,并根据检测到的语言是波兰语还是另一种=英语,转到单独的代码:

@echo关闭
对于/F“tokens=2 delims==”%%l IN('wmic os get OSLanguage/Value'),请设置OSLanguage=%%l
如果%OSLanguage%==1045转到波兰语
如果%o语言%NEQ 1045转到L_英语
:L_波兰
检测到回波抛光
暂停
出口
:L_英语
检测到回声英语
暂停
出口

问题是,如果我们用波兰语安装系统,然后将系统中的语言更改为英语、德语等,代码将不会检测到,也不会设置/显示,也不会转到英语版本的代码,但会检测到默认波兰语并转到波兰语代码


我可以使用什么命令作为检查,以使代码验证当前使用的系统语言版本而不是默认语言?

我对cmd不太确定,但在powershell中,您可以使用
获取区域性

Get-Culture
cmdlet获取有关当前区域性设置的信息。这包括有关系统上当前语言设置的信息,如键盘布局,以及数字、货币和日期等项的显示格式

请看这里:

特别是对于用户设置,您可以选中
获取WinUserLanguageList

Get-WinUserLanguageList
cmdlet返回当前用户语言设置。这些设置包括输入法、拼写设置、文本预测设置和手写输入模式

请看这里:


…当有一个
Get
时,就有一个
Set
。希望这就是你一直在寻找的,或者如果它能为你指明正确的方向

我注意到,批处理文件中明显的一点是,它试图使用
1045
而不是
0415
(如
dism
输出中所示)进行比较。据我所知,没有使用
1045
的语言,因此您的代码将始终
GOTO L_ENGLISH
。1045=波兰语,1033=英语,NEQ 1045=始终GOTO ENGLISH-您需要明确说明您在寻找什么,以及您打算在什么环境下使用它。您需要LCID的具体用途是什么?你拿它干什么?顺便说一句,您的DISM输出提供十六进制LCID,
0415
,您的OSL语言是十进制LCID格式,
1045
。顺便说一句,如果您查看
WMIC OS
命令中的其他属性和值,您还应该注意到有一个
Locale
属性,它将使用十六进制LCID,还有一个
MUILanguages
属性,它将以字符串格式提供已安装语言包的数组,例如
{“en-US”,“pl pl”}
Get-WinUserLanguageList还返回该语言的英文名称,可以将该名称分配给如下变量:
For/F“Delims=“%%G in('powershell-c'(Get-WinUserLanguageList)[0].EnglishName“')Do Set“language=%%G”