2016-05-31 57 views
-1

我目前正在嘗試使用reg查詢命令在HKCU \ Software \ random字符中的隨機名稱的值中查找數據值「teststring」。我想讓腳本找到teststring值,然後刪除父鍵HKCU \ Software \ random characters。我曾嘗試各種方式與腳本,這是我到目前爲止,但我不斷收到語法錯誤並不能得到REG查詢找到我需要它:使用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

這裏做一個簡單的方法它。 刪除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沒有值名稱,它的工作完美無瑕。我可能做錯了,但沒有/它斷了。再次感謝! – DropItLikeItsHot