2

目標は、グラフィック カード ドライバーの複数のバージョンのレジストリ エントリを削除するバッチ ファイルを作成することです。HKLM\System\CurrentControlSet\Control\Video レジストリ キーとサブキーで製造元名を検索し、結果をリストに書き込むか、複数の変数を設定してから、それぞれを削除する必要があります。

これは、正常に動作するように見えた私の元のスクリプトです。

:loop reg
for /f "delims=\, tokens=6" %%r in ('reg query HKLM\System\CurrentControlSet\Control\Video /s /f atikmdag') do set rVAR=%%r
for %%r in (%rVAR%) do reg delete HKLM\System\CurrentControlSet\Video\%%r /f
if not exist "reg query HKLM\System\CurrentControlSet\Control\Video /s /f atikmdag" goto xfiles
goto loop reg

:xfiles
rest of script

変数 %%r は、グラフィック カードの GUID です (例: {3662D7D0-8848-4091-9116-06D253535481})。

問題は、複数のドライバー バージョンのレジストリ エントリを削除する必要があり、検索文字列 "atikmdag" ですべての結果が返されないことです。

このレジストリクエリを試しました HKLM\System\CurrentControlSet\Control\Video /s /v DriverDesc /f "ati"

ただし、データ フィールドに「ati」が含まれているものだけでなく、「DriverDesc」の既存のすべてのエントリが返されます。/s が /f をオーバーライドする可能性があると思いますが、よくわかりません。

TIA にお問い合わせください。-M

4

0 に答える 0