Batch-FOR-Schleife mit REG QUERY, REG EXPORT, Listenabgleich, REG DELETE bei Übereinstimmung und ECHO aller Ausgaben an CMD und output.log

Batch-FOR-Schleife mit REG QUERY, REG EXPORT, Listenabgleich, REG DELETE bei Übereinstimmung und ECHO aller Ausgaben an CMD und output.log

Ich habe eine Liste von Registrierungsschlüsseln/-werten/-einträgen, die ich löschen möchte (im Grunde die Liste in Nr. 3 unten ohne den REG DELETE-Kram). Es funktioniert so, wie es ist, aber ich hätte gerne den Stapel...

I. Schreiben Sie die Datei listfile.txt selbst, wenn list.txt in %~dp0 nicht vorhanden ist

Beispiel:

set "ListFile=%TEMP%\ListFile.txt"
set "List=%~dp0list.txt"

if not exist "%List%" (
    (
        echo Some regisrtry key
        echo Some registry value
        echo Some registry subkey
        echo No idea how it should all be written like
    ) >"%ListFile%"
)

II. Überprüfen Sie die Existenz jedes einzelnen in der Liste mit REG QUERY und haben Sie einen ERRORLEVEL

Wenn es existiert...

  1. REG EXPORTIEREN Sie es in seine eigene gültige .reg-Datei (die wieder importiert werden kann, falls etwas schief geht).

Beispiel:

for /f %%A in (%src%) do (
    if not exist "%bkp%\%%A" md "%bkp%\%%A"
    reg export "%%A" "%bkp%\%%A\key.reg"

Ich bin nicht sicher, ob das oben genannte mit bestimmten Werten oder allen Einträgen innerhalb eines angegebenen Schlüssels funktioniert.

  1. Vergleichen Sie die Liste und .reg

  2. Wenn es übereinstimmt, führen Sie je nach Bedarf REG DELETE /f oder REG DELETE /v /f oder REG DELETE /va /f aus.

REG DELETE "HKCU\Software\Google\Chrome" /f
REG DELETE "HKLM\Software\Google\Chrome" /f
REG DELETE "HKCU\Software\Policies\Google\Chrome" /f
REG DELETE "HKLM\Software\Policies\Google\Chrome" /f
REG DELETE "HKLM\Software\Policies\Google\Update" /f
REG DELETE "HKLM\Software\WOW6432Node\Google\Enrollment" /f
REG DELETE "HKLM\Software\WOW6432Node\Google\Update\ClientState\{430FD4D0-B729-4F61-AA34-91526481799D}" /v CloudManagementEnrollmentToken /f
REG DELETE "HKLM\Software\WOW6432Node\Microsoft\Policies" /f
REG DELETE "HKLM\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Policies" /f
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies" /f
REG DELETE "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies" /f
REG DELETE "HKCU\Software\Microsoft\WindowsSelfHost" /f
REG DELETE "HKLM\Software\Microsoft\WindowsSelfHost" /f
REG DELETE "HKLM\Software\Microsoft\Policies" /f
REG DELETE "HKCU\Software\Policies" /f
REG DELETE "HKLM\Software\Policies" /f
REG DELETE "HKLM\Software\Policies\Microsoft\Windows Defender" /v DisableAntiSpyware /f
REG DELETE "HKLM\Software\Policies\Microsoft\Edge" /va /f
REG DELETE "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsStore\WindowsUpdate" /f
REG DELETE "HKLM\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\WindowsStore\WindowsUpdate" /f
  1. ECHO an cmd und %~dp0output.log, dass die Schlüssel/Werte/Einträge verarbeitet und gelöscht wurden

Wenn es das nicht gibt...

  1. ECHO an cmd und %~dp0output.log, dass es nicht existiert
"HKCU\Software\Google\Chrome" key does not exist
No entries can be found in "HKLM\Software\Policies\Microsoft\Edge"
Value DisableAntiSpyware cannot be found in "HKLM\Software\Policies\Microsoft\Windows Defender"

III. Löschen Sie die Liste, die durch den Stapel erstellt wurde, jedoch nicht, wenn sie bereits vorhanden war.

IF EXIST "%ListFile%" ( DEL "%ListFile%" ) ELSE ( goto :eof )

Ich habe versucht, die gefundenen Snippets zu ändern, verstehe aber noch nicht, wie For-Schleifen überhaupt funktionieren, und zwar so, dass ich nur eine Liste habe und die For-Schleife sich anpasst, falls es sich um einen Schlüssel oder einen Wert (/v) handelt und/oder nur alle Einträge innerhalb des angegebenen Schlüssels (/va) verarbeitet werden müssen.

Das aktuelle Skript unten funktioniert bisher, aber es fehlen alle oben genannten Punkte. Jede Hilfe zum Hinzufügen dieser Punkte ist willkommen.

REG DELETE "HKCU\Software\Google\Chrome" /f
REG DELETE "HKLM\Software\Google\Chrome" /f
REG DELETE "HKCU\Software\Policies\Google\Chrome" /f
REG DELETE "HKLM\Software\Policies\Google\Chrome" /f
REG DELETE "HKLM\Software\Policies\Google\Update" /f
REG DELETE "HKLM\Software\WOW6432Node\Google\Enrollment" /f
REG DELETE "HKLM\Software\WOW6432Node\Google\Update\ClientState\{430FD4D0-B729-4F61-AA34-91526481799D}" /v CloudManagementEnrollmentToken /f
REG DELETE "HKLM\Software\WOW6432Node\Microsoft\Policies" /f
REG DELETE "HKLM\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Policies" /f
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies" /f
REG DELETE "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies" /f
REG DELETE "HKCU\Software\Microsoft\WindowsSelfHost" /f
REG DELETE "HKLM\Software\Microsoft\WindowsSelfHost" /f
REG DELETE "HKLM\Software\Microsoft\Policies" /f
REG DELETE "HKCU\Software\Policies" /f
REG DELETE "HKLM\Software\Policies" /f
REG DELETE "HKLM\Software\Policies\Microsoft\Windows Defender" /v DisableAntiSpyware /f
REG DELETE "HKLM\Software\Policies\Microsoft\Edge" /va /f
REG DELETE "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsStore\WindowsUpdate" /f
REG DELETE "HKLM\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\WindowsStore\WindowsUpdate" /f

@RD /S /Q "%ProgramFiles(x86)%\Google\Policies"
@RD /S /Q "%WinDir%\System32\GroupPolicy"
@RD /S /Q "%WinDir%\System32\GroupPolicyUsers"

ECHO.
gpupdate /force
ECHO.
ECHO Complete. Will shutdown..
pause>nul
shutdown.exe /r /t 00
EXIT /B 0

Antwort1

@echo off

for /f usebackq^tokens^=1-3*delims^=^" %%i in =;(
    `type "%~f0" ^| findstr /b \^"`
        );= do if "%%~l" == "" 2>nul =;(
             reg query "%%~i" >nul && =;(
             reg export "%%~i" "%%~k.reg" /y
             reg delete "%%~i" /f
            );= || echo/Key not exist "%%~i"
        );= else if "%%~l" == "/va" 2>nul =;(
             reg query "%%~i" >nul && =;(
             reg export "%%~i" "%%~k.reg" /y
             reg delete "%%~i" /va /f
            );= || echo/Key not exist "%%~i"
        );= else 2>nul =;(
             reg query "%%~i" >nul && =;(
             reg export "%%~i" "%%~l.reg" /y
             reg delete "%%~i" /v "%%~j" /f
            );= || echo/Key not exist "%%~i"
        );=

>nul 2>&1 rd /s /q "%ProgramFiles(x86)%\Google\Policies" "%Windir%\System32\GroupPolicy" "%Windir%\System32\GroupPolicyUsers"

echo/ & gpupdate /force | findstr . 
timeout -1 | echo/Complete. Will shutdown!.. 

echo/ & shutdown.exe /r /t 00   
exit /b 0 || goto :eof

::--------------------------------------------------------------::
::         Your listing of registry keys/values/entries         ::
::--------------------------------------------------------------::

"HKCU\Software\Policies" "HKCU_Policies"
"HKCU\Software\Google\Chrome" "HKCU_Chrome"
"HKCU\Software\Policies\Google\Chrome" "HKCU_Google_Chrome"
"HKCU\Software\Microsoft\WindowsSelfHost" "HKCU_Microsoft_WindowsSelfHost"
"HKCU\Software\Microsoft\Windows\CurrentVersion\Policies" "HKCU_Microsoft_Policies"

"HKLM\Software\Policies" "HKLM_Policies"
"HKLM\Software\Google\Chrome" "HKLM_Chrome"
"HKLM\Software\Microsoft\Policies" "HKLM_Microsoft_Policies"
"HKLM\Software\Policies\Google\Chrome" "HKLM_Google_Chrome"
"HKLM\Software\Policies\Google\Update" "HKLM_Google_Update"
"HKLM\Software\Microsoft\WindowsSelfHost" "HKLM_Microsoft_WindowsSelfHost"
"HKLM\Software\Policies\Microsoft\Edge" "HKLM_Edge" /va

"HKLM\Software\Microsoft\Windows\CurrentVersion\Policies" "HKLM_CurrentVersion_Policies"
"HKLM\Software\Policies\Microsoft\Windows Defender" "HKLM_Windows_Defender" "DisableAntiSpyware"
"HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsStore\WindowsUpdate" "HKLM_WindowsStore_WindowsUpdate"

"HKLM\Software\WOW6432Node\Google\Enrollment" "HKLM_WOW6432Node_Google_Enrollment"
"HKLM\Software\WOW6432Node\Microsoft\Policies" "HKLM_WOW6432Node_Microsoft_Policies"
"HKLM\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Policies" "HKLM_WOW6432Node_CurrentVersion_Policies"
"HKLM\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\WindowsStore\WindowsUpdate" "HKLM_WOW6432Node_WindowsStore_WindowsUpdate"
"HKLM\Software\WOW6432Node\Google\Update\ClientState\{430FD4D0-B729-4F61-AA34-91526481799D}" "HKLM_WOW6432Node_Google_Update_ClientState" "CloudManagementEnrollmentToken"

1.Verwenden Sie Ihren Batch-Speicher, um die Schlüssel und Namen (Uniques) für files.reg aufzulisten

2.Verwenden Sie eine For /FSchleife, um die Schlüssel zu finden/filtern

3.For /FWählen Sie, ob in dieser Schleife Anführungszeichen als Trennzeichen verwendet werden sollen.

4.Filtern Sie im Schleifenbefehl die Zeilen heraus, die mit beginnen"(Zitat) mit:

  • for ...('
             type "%~f0" ^|findstr /b \^" 
                                          ')do...
    

5.Verwenden Sie Vorkommen von Werten (null, gleich oder unterschiedlich) in in %%lan, ifum jeden Fall zu behandeln

6.Der Operator &&reg querysuccess“ gibt an, ob der Schlüssel/Wert in der Registrierung vorhanden ist.

6.Der Operator &&reg querysuccess“ gibt an, ob der Schlüssel/Wert in der Registrierung vorhanden ist.


Bem. 1:Sie können mehrere Ordner mit einem Befehl entfernen:

   rd /q /s "FOLDER_01" "FOLDER_02" "FOLDER_nn"
rmdir /q /s "FOLDER_01" "FOLDER_02" "FOLDER_nn"

Bem. 2:Sie können einen Ordner entfernen, der nicht existiert, es wird kein nuklearer kosmischer Fehler zurückgegeben, es wird nur eine Warnung zurückgegeben, dass der"Das System kann nicht finden", sodass Sie beim Löschen des Ordners die mögliche einfache Textnachricht, ob er existiert oder nicht, einfach weglassen können, und die Ausführung Ihres Bat wird nicht einmal abgebrochen:

2>nul rmdir /q /s "FOLDER_01" "FOLDER_02" "FOLDER_nn"
if exist "FOLDER_01" rd /q /s "FOLDER_01"
if exist "FOLDER_02" rd /q /s "FOLDER_02"
if exist "FOLDER_nn" rd /q /s "FOLDER_nn"

Bem. 3:Dasselbe gilt auch für den Löschbefehl:

2>nul del /q "FILE_01" "FILE_02" "FILE_nn"
if exist "FILE_01" del /q "FILE_01"
if exist "FILE_02" del /q "FILE_02"
if exist "FILE_nn" del /q "FILE_nn"

Zusätzliche Ressourcen:

verwandte Informationen