Löschen Sie alle registry-Schlüssel enthält, oder den Namen "string" mit Batch
Ich arbeite gerade an einer batch-Datei löschen Sie alle registry-Schlüssel enthalten oder den Namen einer bestimmten Zeichenfolge (ja ich kenne die Gefahren, dies zu tun), aber ich habe da ein paar Fragen.
Den code, den ich versuchte zu verwenden ist:
@echo off
set "key=HKEY_LOCAL_MACHINE\SOFT-EXT"
set "search=string"
for /f "delims=" %%a in ('reg query "%key%" /s^| findstr "%search%"') do reg delete "%key%" /v "%%~a"
Dieser arbeitet nach einer ganz bestimmten, vorgegebenen Bereich des Registrierungs - der einzige Nachteil für mich ist, dass mein Skript braucht, um eine Analyse der GESAMTEN SOFTWARE
Registrierungsstruktur, die geladen wird, von einem externen Laufwerk. Was derzeit passiert, ist das Skript ausgeführt wird, für etwa ~20 Sekunden mit keine Rückkehr in die Eingabeaufforderung. Danach bekomme ich weiterhin Linien mit FINDSTR: Line 50300 too long
mit zunehmendem Wert auf die Nummer der Zeile. Einige kurze Lesung führt mich zu glauben, dass findstr
nur Schaffe, so viele bytes von Daten, und ich bin offensichtlich überladen es aufgrund der enormen Größe dieser registry-hive (ca. 80-100MB pro).
Um dieses Problem zu beheben, ich habe versucht, ändern Sie die for-Schleife eine zusätzliche Abfrage mit zwei bedingte &&
s und ||
aber das funktioniert nicht, entweder, weil gelegentlich die registry-Schlüssel mit der Zeichenfolge sein könnte, benannt HKLM\SOFTWARE\Classes\CSID\{###-###-###}\Example
mit einem DWORD-Wert mit dem Namen Name
und die Daten Wert string
.
Gibt es eine Möglichkeit, das zu tun, was ich tun möchte mit einer batch-Datei? Ich glaube, es ist möglich mit der PowerShell, aber die Umwelt arbeite ich in nicht unterstützen PowerShell oder VB-scripting.
- Versuchen Sie es mit findstr statt finden.
- Sorry - es ist eigentlich findstr in den code. Ich vertippt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir nicht wirklich sicher, was Sie wollen:
Wollen Sie wirklich löschen registry Schlüssel angezeigt, auf der linken Seite im Baum in Regedit wie geschrieben im Titel der Frage oder registry Werte der Typ ? (REG_SZ?) angezeigt auf der rechten Seite in Regedit.
Ich denke, Sie wollen, löschen Sie die Registrierungswerte des Typs ? das ist viel schwieriger als das löschen von registry-Schlüsseln.
Hier ist ein batch-code zu suchen, registry-Schlüssel und entweder nur die Liste mit
Action=Find
oder außerdem löschen Sie mitAction=Delete
oben kommentierte batch-code.Ist es dringend empfohlen, zum ausführen dieser batch-code zuerst mit
Action=Find
wie hier gepostet und Blick auf die gefundenen registry-Schlüssel vor dem löschen Sie mitAction=Delete
.string
, und ich brauche, um die Suche für die alle Werte enthält, als auch, zum Beispiel (wenn die Zeichenfolge "Adobe")HKLM\SOFTWARE\Adobe\Adobe Bridge
undHKCR\.pdfxml - Content Type: application/vnd.adobe.pdfxml
beide entfernt werden müssen.