通过.bat添加/删除键盘语言

Geo*_*rge 8 batch-file

现在有一段时间我正在使用win7,它会经常混淆我的键盘语言,我必须远程添加3种键盘语言,应用,然后删除它们.所以,我想知道是否有办法自动通过.bat文件(添加3种特定的键盘语言,然后立即删除它们).但是,我对.bat命令几乎一无所知,所以有人知道这是否可以通过.bat文件,如果可以,我应该使用什么命令?

乔治,提前谢谢你.

小智 6

这是可能的.

http://blogs.msdn.com/b/shawnste/archive/2007/04/12/configuring-international-settings-from-the-command-line.aspx

http://msdn.microsoft.com/en-us/goglobal/bb964650#eyb

命令行示例:

control intl.cpl,, /f:"%CD%\AddKeyboardLanguage.xml"
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)


joo*_*oon 5

我也遇到了同样的问题 -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>
Run Code Online (Sandbox Code Playgroud)

Remove_en-US.bat

control intl.cpl,, /f:"%CD%\Add_en-US.xml"
Run Code Online (Sandbox Code Playgroud)

这里,0409locale ID00000409是键盘布局值。有关列表,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)


Mat*_*son 1

键盘语言存储在注册表中,HKEY_CURRENT_USER\Keyboard Layout您可以REG.EXE在批处理文件中使用它来添加/修改/删除注册表项。REG.EXE不支持远程更改HKEY_CURRENT_USER注册表项,因此必须从相关计算机运行该文件。但我们可能不必这样做。这就是我要做的。当您的计算机正常工作时,CMD通过单击开始按钮并CMD在运行框中键入内容转到提示。根据CMD提示,输入:

  REG QUERY "HKCU\Keyboard Layout" /s
Run Code Online (Sandbox Code Playgroud)

这将向您展示一切正常时注册表项应该是什么样子。现在拍摄快照并将其存储在文件中,输入:

  REG EXPORT "HKCU\Keyboard Layout" KeyboardLayout.reg
Run Code Online (Sandbox Code Playgroud)

CMD这将在您提示的任何目录中创建 KeyboardLayout.reg 文件。我不确定为什么您必须添加 3 种特定语言,然后删除它们才能恢复工作状态,但我有一种感觉,只需将注册表设置回其工作时的状态即可解决问题。下次发生这种情况时,远程浏览到 KeyboardLayout.reg 文件的位置并双击它。它会告诉您密钥已更新并单击“确定”。看看是否能解决问题。如果没有,请重新启动该计算机,然后查看是否有。如果仍然不起作用,请发回评论,我会告诉你下一步我会做什么。