コマンドプロンプト経由でタスクスケジューラーに特殊なレジストリーを消させる

SYSTEM\Enum配下にあるレジストリーはデバイスマネージャーに登録されたデバイスドライバなのですが、Windows 7以降、バグった場合に削除できなくてよく困ります。

タスクスケジューラーをバッチファイルで実行すれば手早く登録と実行ができます。


1. ダブルクオートの問題

/TRのあとコマンドを書くのですが、スペースがあると、それ以降を認識してくれないので " " ダブルクオーで囲う必要があります。しかし、 del "c:\mof mof" のようなコマンドを実行するときに悩んでしまいます。
これは簡単。"の前に \をつければ良いのです。

例えばこんな感じです。
schtasks /create /tn "del \"c:\mofmof\""

2. アンパサンドの問題

デバイスドライバエントリーをレジストリから削除する場合
問題になるのが &(アンパサンド)です。
& が入っていると コマンドが分割され、別々に実行されてしまいます。
この場合は、\&にしても効果はありません。
&の場合は、  ^& のようにします。

例えば、レジストリ

HKLM\SYSTEM\CurrentControlSet\Enum\USB\VID_0E0F&PID_000B&MI_00
を削除させるためには

schtasks /create /tn "delreg" /sc daily /st 10:00 /ru system /RL HIGHEST /tr "reg delete \"HKLM\SYSTEM\CurrentControlSet\Enum\USB\VID_0E0F^&PID_000B^&MI_00\" /f"

schtasks /run /tn "delreg"

これで登録と削除が実行できます
レジストリの削除は、確認プロンプトが出るので /f つけないと裏で止まるので注意

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です