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

时间:2013-05-12 10:18:06

标签: batch-file

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

提前谢谢你, 乔治。

5 个答案:

答案 0 :(得分:5)

这是可能的。

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"

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"

此处,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)

答案 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;"

首先我们必须添加它们,然后删除它们。对我来说很好用。