2013-05-12 8 views
6

Qualche ora che sto usando win7, regolarmente scompiglia i miei linguaggi della tastiera e devo aggiungere a distanza 3 lingue della tastiera, applicare e quindi rimuoverli. Quindi, mi stavo chiedendo se c'è un modo per farlo attraverso un file .bat automaticamente (aggiungere 3 lingue di tastiera specifiche e poi rimuoverle immediatamente). Tuttavia, non conosco quasi nulla dei comandi .bat, quindi qualcuno sa se questo è possibile tramite un file .bat e se sì, quali comandi dovrei usare?Aggiungere/rimuovere le lingue della tastiera tramite .bat

Grazie in anticipo, George.

+0

Non so se esiste un'interfaccia a riga di comando per controllare le lingue della tastiera, ma una macro di tastiera che utilizza 'un programma macro 'potrebbe essere una soluzione. 'AutoIt' è un altro strumento in grado di automatizzare i movimenti della tastiera e del mouse. – foxidrive

+0

non so se questo potrebbe aiutare: http://jekkilekki.wordpress.com/2009/01/05/changing-os-languages-in-windows-xp/ – npocmaka

risposta

2

Le lingue della tastiera sono memorizzate nel registro sotto HKEY_CURRENT_USER\Keyboard Layout È possibile utilizzare REG.EXE in file batch per aggiungere/modificare/rimuovere le chiavi del Registro di sistema. REG.EXE non supporta la modifica remota delle chiavi del registro HKEY_CURRENT_USER in modo che il file debba essere eseguito dal computer in questione. Probabilmente non dovremo farlo però. Questo è quello che farei. Quando il computer funziona come dovrebbe, vai al prompt CMD facendo clic sul pulsante di avvio e digitando CMD nella casella Esegui. Dal CMD prompt digitare:

REG QUERY "HKCU\Keyboard Layout" /s 

Questo ti mostrerà ciò che le chiavi di registro dovrebbe essere simile a quando tutto va bene. Ora prendete una fotografia istantanea di che e conservarla in un file digitando:

REG EXPORT "HKCU\Keyboard Layout" KeyboardLayout.reg 

Questo creerà il file KeyboardLayout.reg in qualsiasi directory prompt CMD dice. Non sono sicuro del motivo per cui dovresti aggiungere 3 lingue specifiche e poi rimuoverle per tornare all'ordine di lavoro ma ho la sensazione che l'impostazione del Registro di sistema come avveniva nel momento in cui ha funzionato avrebbe risolto il problema. La prossima volta che succede, accedi in modalità remota alla posizione del file KeyboardLayout.reg e fai doppio clic su di esso. Ti dirà che la chiave è stata aggiornata e fare clic su OK. Vedi se lo risolve. In caso contrario, riavvia il computer e controlla se lo fa. Se continua a non funzionare, postback un commento e ti dirò cosa farei dopo.

5

È possibile.

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

linea di comando esempio:

control intl.cpl,, /f:"%CD%\AddKeyboardLanguage.xml" 

AddKeyboardLanguage.xml esempio:

<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> 

esempio 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

Per me funziona molto bene su Win7. Non ti stavo rispondendo in modo specifico, ma poiché avevo bisogno della stessa soluzione e sono incappato nella tua domanda durante la mia ricerca, ho pensato che potesse essere utile per altre persone in futuro. – Ying

+0

Solo per i record: perché aggiungi '' nel tuo file .xml? – PeterCo

+0

Penso che possa essere rimosso. È solo un commento – Ying

2

Usando le punte @Ying/link ... Ho fatto un file 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> 

e poi basta creare un .bat con questo comando all'interno:

control intl.cpl,, /f:"%CD%\pt.xml" 

doppio clic su di esso e dovrebbe funzionare all'istante!

+0

Esattamente quello di cui avevo bisogno, grazie. –

1

Anche io ho riscontrato lo stesso problema - en-US è stato aggiunto automaticamente, e ho dovuto aggiungere en-US e quindi rimuoverlo per eliminare il layout.Anche con il file batch, ho scoperto che non puoi semplicemente rimuoverlo, devi prima aggiungere il layout (anche se viene visualizzato nell'elenco dei layout della tastiera) per poterlo rimuovere proprio come quando lo fai manualmente.

Quindi, il file Remove_en-US.xml primo aggiunge il layout e poi rimuoverlo:

<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" 

Qui, 0409 è il locale ID e 00000409 è i valori layout di tastiera. Per l'elenco di locale ID:keyboard layout value vedere https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-8.1-and-8/hh825682(v=win.10).

Problemi correlati