目標は、グラフィック カード ドライバーの複数のバージョンのレジストリ エントリを削除するバッチ ファイルを作成することです。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