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.
InformationsquelleAutor John | 2014-10-01
Schreibe einen Kommentar