2016-05-31 4 views
-1

現在、reg queryコマンドを使用して、HKCU \ Software \ random文字でランダムな名前の値に "teststring"というデータ値を見つけようとしています。スクリプトがテストストリングの値を見つけて、親キーHKCU \ Software \ randomを削除するようにします。ここで行うための簡単な方法だReg.exeでデータ値を検索して親キーを削除

@echo off 
setlocal enabledelayedexpansion 
set Key="HKCU\Software" 
set STRING="teststring" 
for /f "delims=" %%a in ('reg.exe query "%Key%" /f "%STRING%" /d /s') do (
call :GetValueName Value "%%a" 
ECHO reg.exe delete "%Key%" /v "!Value!" /f 
) 

goto :eof 
:GetValueName 
set Return= 
for %%a in (%~2) do (
if "%%a"=="REG_SZ" (
    set %1=!Return:~1!&goto :eof 
) else (
    set Return=!Return! %%a 
) 
) 
:eof 
+0

どのようなエラーが表示されますか? – NobodyNada

+0

REGクエリの構文をどのくらい変更するかにかかわらず、構文が無効です。 – DropItLikeItsHot

+0

@NobodyNadaが欲しかったのは、正確なエラーメッセージだったと思います。また、バッチファイルをデバッグするための一般的なヒントは、デバッグ中にファイルの先頭から '@echo off'を削除することです。エラーがバッチ内にある場合は、その行によってエラーが表示されなくなります。 –

答えて

1

:私は、スクリプトでさまざまな方法を試してみましたが、これは私がこれまでのところ、しかし、私は構文エラーを取得維持しているとREGクエリが、私はそれを必要とするものを見つけるために得ることができないものですそれ。 表示されている内容に満足したら、ECHO(エコーではありません)を削除します。

@echo off 
set "Key=HKCU\Software" 
set "STRING=teststring" 
for /f "delims=" %%a in ('reg query "%Key%" /v test /s /d /f "%STRING%" /t REG_SZ') do (
    echo %%a | findstr /v "REG_SZ" | findstr /v /c:"End of search:" >nul && ECHO reg.exe delete "%%a" /f 
) 
pause 
+0

ありがとう!私が持っていたものは確かに間違っています。良い例から学ぶことは良いことです。私はちょっと見つけられませんでした。また、私は/ vテストについて間違っていました。値の名前は実際にはランダムです。私は "テスト"を削除し、現在は値のない/ vを持っていて、完璧に動作します。私は間違っているかもしれませんが、/ vがなければそれは壊れます。再度、感謝します! – DropItLikeItsHot

関連する問題