使用Reg.exe搜索数据值并删除父键

时间:2016-05-31 23:09:06

标签: batch-file

我目前正在尝试使用reg query命令在HKCU \ Software \ random字符中随机名称的值中查找数据值“teststring”。我希望脚本找到teststring值,然后删除父键HKCU \ Software \ random字符。我已经尝试了各种编写脚本的方法,这是我到目前为止所做的,但是我不断收到语法错误,无法通过reg查询来查找我需要的内容:

@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

1 个答案:

答案 0 :(得分:1)

这是一种更简单的方法。 在您对所显示的内容感到满意后,删除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