现在有一段时间我正在使用win7,它会经常混淆我的键盘语言,我必须远程添加3种键盘语言,应用,然后删除它们。所以,我想知道是否有办法自动通过.bat文件(添加3种特定的键盘语言,然后立即删除它们)。但是,我对.bat命令几乎一无所知,所以有人知道这是否可以通过.bat文件进行,如果可以,我应该使用哪些命令?
提前谢谢你, 乔治。
答案 0 :(得分:5)
这是可能的。
http://msdn.microsoft.com/en-us/goglobal/bb964650#eyb
命令行示例:
control intl.cpl,, /f:"%CD%\AddKeyboardLanguage.xml"
AddKeyboardLanguage.xml示例:
<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend">
<gs:UserList>
<gs:User UserID="Current" CopySettingsToDefaultUserAcct="true" CopySettingsToSystemAcct="true"/></gs:UserList>
<gs:InputPreferences>
<!--ch-Google--><gs:InputLanguageID Action="add" ID="0804:E0200804"/>
</gs:InputPreferences>
</gs:GlobalizationServices>
RemoveKeyboardLanguage.xml示例:
<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend">
<gs:UserList>
<gs:User UserID="Current" CopySettingsToDefaultUserAcct="true" CopySettingsToSystemAcct="true"/></gs:UserList>
<gs:InputPreferences>
<!--ch-Google--><gs:InputLanguageID Action="remove" ID="0804:E0200804"/>
</gs:InputPreferences>
</gs:GlobalizationServices>
答案 1 :(得分:3)
我也遇到了同样的问题 - en-US
会自动添加,我必须添加en-US
然后删除它才能摆脱布局。即使使用批处理文件,我发现你不能只删除它,你必须首先添加布局(即使它显示在键盘布局列表中),以便能够像手动操作一样将其删除。
因此,Remove_en-US.xml
文件首先添加布局,然后将其删除:
<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend">
<!--User List-->
<gs:UserList>
<gs:User UserID="Current"/>
</gs:UserList>
<!--input preferences-->
<gs:InputPreferences>
<!--add en-US keyboard input-->
<gs:InputLanguageID Action="add" ID="0409:00000409"/>
<!--remove en-US keyboard input-->
<gs:InputLanguageID Action="remove" ID="0409:00000409"/>
</gs:InputPreferences>
</gs:GlobalizationServices>
Remove_en-US.bat
:
control intl.cpl,, /f:"%CD%\Add_en-US.xml"
此处,0409
是locale ID
,00000409
是键盘布局值。对于locale ID:keyboard layout value
的列表,请参阅https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-8.1-and-8/hh825682(v=win.10)。
答案 2 :(得分:2)
键盘语言存储在{{1}}下的注册表中。您可以在批处理文件中使用HKEY_CURRENT_USER\Keyboard Layout
来添加/修改/删除注册表项。 REG.EXE
不支持远程更改REG.EXE
注册表项,因此必须从相关计算机运行该文件。我们可能不必这样做。这就是我要做的。当您的计算机正常工作时,单击开始按钮并在运行框中键入HKEY_CURRENT_USER
,转到CMD
提示符。在CMD
提示符下键入:
CMD
这将显示一切正常时注册表项应该是什么样子。现在拍摄快照,并输入以下内容将其存储在文件中:
REG QUERY "HKCU\Keyboard Layout" /s
这将在您的 REG EXPORT "HKCU\Keyboard Layout" KeyboardLayout.reg
提示符所指的任何目录中创建KeyboardLayout.reg文件。我不确定为什么你必须添加3种特定语言,然后将它们删除以恢复工作状态,但我有一种感觉,只是将注册表恢复到它工作时的方式将解决问题。下次发生时,远程浏览到KeyboardLayout.reg文件的位置并双击它。它会告诉您密钥已更新并单击确定。看看是否能修复它。如果没有,请重新启动该计算机,然后查看是否存在。如果它仍然不起作用,请回复评论,我会告诉你接下来我会做什么。
答案 3 :(得分:2)
使用@Ying提示/链接...
我制作了一个pt.xml
文件:
<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend">
<!--User List-->
<gs:UserList>
<gs:User UserID="Current"/>
</gs:UserList>
<!--input preferences-->
<gs:InputPreferences>
<!--add pt-BR keyboard input and set as default-->
<gs:InputLanguageID Action="add" ID="0416:00010416" Default="true"/>
</gs:InputPreferences>
</gs:GlobalizationServices>
然后在里面用这个命令创建一个.bat
:
control intl.cpl,, /f:"%CD%\pt.xml"
双击它,它应该立即工作!
答案 4 :(得分:0)
还有一个powershell方法。这是删除 en-US 和 de-DE 布局的简单批处理
@echo off
for %%q in (en-US de-DE) do ^
powershell -c "$ll=Get-WinUserLanguageList; $ll.add('%%q'); Set-WinUserLanguageList $ll -force;" & ^
powershell -c "$ll=Get-WinUserLanguageList; $ll.remove(($ll |? LanguageTag -like '%%q')); Set-WinUserLanguageList $ll -force;"
首先我们必须添加它们,然后删除它们。对我来说很好用。