Info
Relativ einfache Anforderung: Es sollen Registry Keys nach bestimmten Inhalten durchsucht und diese dann herausgefiltert werden. Gesucht wird sowohl in den Attributbezeichnern als auch in den Werten, Achtung an dieser Stelle, dass nicht zu viel gelöscht wird.
Kurzes Beispiel:
Das Skript könnte mit dem Filter „Memento“ die ersten fünf Einträge herauslöschen. Mit „Version“ oder „Client“ würde jeweils ein Eintrag gelöscht werden. Somit ist das Skript wie ein Regex-ähnlicher Filter zum Löschen von Registry-Einträgen zu sehen.
Außerdem habe ich das Skript in zwei verschiedenen Varianten programmiert: Variante 1 ist einfach und arbeitet 1 Filteranfrage ab. Variante 2 verbaut den Code in einer Funktion und kann beliebig oft mit unterschiedlichen Filterparametern aufgerufen werden. Beide Skript sind durch möglichst viele Variablen gut anpassbar für den schnellen Einsatz.
Code
Variante 1: 1 Filter anwenden:
@echo on & color 9f & setlocal ::REM EDIT VARIABLES set wd=%userprofile%\Desktop set originalreg=%wd%\original.reg set filteredreg=%wd%\filtered.reg set regkey=HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\FileZilla Client set filter=asd ::REM END VARIABLES ::REM useage: call filter "regkey","whattofilter" reg export "%regkey%" "%originalreg%" if exist "%originalreg%" ( goto true ) else ( goto end ) :true find /v /i "%filter%" < %originalreg% > %filteredreg% reg delete "%regkey%" /f reg import %filteredreg% del %originalreg% /F del %filteredreg% /F :end endlocal
Variante 2: Beliebig viele verschiedene Filter anwenden:
@echo on & color 9f & setlocal ::REM EDIT VARIABLES set wd=%userprofile%\Desktop set originalreg=%wd%\original.reg set filteredreg=%wd%\filtered.reg ::REM END VARIABLES call:filter "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\FileZilla Client","asd" call:filter "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\FileZilla Client","23" call:filter "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\FileZilla Client","!§" goto end ::REM useage: call filter "regkey","whattofilter" :filter reg export "%~1" "%originalreg%" if exist "%originalreg%" ( goto true ) else ( goto end ) :true find /v /i "%~2" < %originalreg% > %filteredreg% reg delete "%~1" /f reg import %filteredreg% del %originalreg% /F del %filteredreg% /F goto:EOF :end endlocal