2016-05-31 1 views
-1

Ich versuche derzeit, Reg-Abfrage-Befehle zu verwenden, um den Datenwert "testring" in einem Wert mit einem zufälligen Namen in HKCU \ Software \ zufällige Zeichen zu finden. Ich möchte, dass das Skript den Teststring-Wert findet und anschließend den übergeordneten Schlüssel HKCU \ Software \ zufällige Zeichen löscht. Ich habe verschiedene Möglichkeiten, um mit Scripting versucht und das ist, was ich habe bisher aber ich Syntaxfehler erhalte und nicht reg Abfrage bekommen zu finden, was ich es brauche:Suche nach Datenwert mit Reg.exe und löschen übergeordneten Schlüssel

@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

Welche Fehler bekommen Sie? – NobodyNada

+0

Ungültige Syntax, unabhängig davon, wie sehr ich die Syntax für die REG-Abfrage ändere. – DropItLikeItsHot

+0

Ich denke, was @NobodyNada wollte, war die genaue Fehlermeldung. Der allgemeine Tipp zum Debuggen von Batch-Dateien besteht darin, beim Debuggen '@echo off' vom Anfang der Datei zu entfernen. Wenn sich der Fehler in Ihrem Stapel befindet, verhindert diese Zeile die Anzeige. –

Antwort

1

Hier ist eine einfachere Art und Weise zu tun es. Entfernen Sie das ECHO (nicht das Echo), nachdem Sie mit dem Ergebnis zufrieden sind.

@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

Danke! Es ist sicherlich viel falsch mit dem, was ich hatte, und es ist gut, von guten Beispielen zu lernen, ich konnte einfach keine finden. Außerdem habe ich mich beim/v-Test geirrt, die Wertnamen sind tatsächlich zufällig. Ich habe "test" entfernt und habe jetzt nur noch/v ohne einen Wertnamen und es funktioniert einwandfrei. Ich mag es falsch machen, aber ohne/v bricht es. Danke noch einmal! – DropItLikeItsHot