Tengo una lista de claves/valores/entradas de registro que me gustaría eliminar (básicamente la lista en el n.° 3 a continuación sin el elemento REG DELETE). Funciona tal cual pero me gustaría tener el lote...
I. Escriba el archivo listfile.txt si list.txt no existe en %~dp0
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. Verifique la existencia de cada uno en la lista con REG QUERY y tenga un ERRORLEVEL
Si existiera..
- REG EXPORTARLO a su propio .reg válido (que se puede volver a importar en caso de que algo salga mal).
for /f %%A in (%src%) do (
if not exist "%bkp%\%%A" md "%bkp%\%%A"
reg export "%%A" "%bkp%\%%A\key.reg"
No estoy seguro de si lo anterior funcionará con valores específicos o con todas las entradas dentro de una clave específica.
comparar la lista y .reg
si coincide, ejecute REG DELETE /f o REG DELETE /v /f o REG DELETE /va /f según corresponda.
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
- ECHO a cmd y %~dp0output.log que las claves/valores/entradas habían sido procesadas y eliminadas
Si no existe..
- ECHO a cmd y %~dp0output.log que no existe
"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. Elimine la lista creada por el lote, pero no si ya estaba presente.
IF EXIST "%ListFile%" ( DEL "%ListFile%" ) ELSE ( goto :eof )
Intenté modificar los fragmentos que encontré, pero aún no entiendo cómo funcionan los bucles for y también de manera que solo tendré una lista y el bucle for se adaptará en caso de que sea una clave, sea un valor (/v ) y/o solo requiere procesar todas las entradas dentro de la clave especificada (/va)
El script actual a continuación funciona hasta ahora, pero le faltan todos los puntos anteriores. Se agradece cualquier ayuda para agregarlos.
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
Respuesta1
@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.Utilice su almacén por lotes para enumerar las claves y los nombres (únicos) de files.reg
2.Utilice un For /F
bucle para buscar/filtrar las claves
3.Elija trabajar con "comillas" como delimitador en este For /F
bucle
4.En el comando de bucle, filtre las líneas que comienzan con"
(cita) con:
for ...(' type "%~f0" ^|findstr /b \^" ')do...
5.Utilice ocurrencias de valor (nulo, igual o diferente) en %%l
un if
para manejar cada caso
6.El uso &&
del operador para reg query
tener éxito le indica si la clave/valor existe en el registro
6.El uso &&
del operador para reg query
tener éxito le indica si la clave/valor existe en el registro
Obs. 1:Puede eliminar varias carpetas con un solo comando:
rd /q /s "FOLDER_01" "FOLDER_02" "FOLDER_nn"
rmdir /q /s "FOLDER_01" "FOLDER_02" "FOLDER_nn"
Obs. 2:Puedes eliminar una carpeta que no existe, no devuelve un error cósmico nuclear, solo devuelve una advertencia de que el"el sistema no puede encontrar", por lo que puedes omitir el posible mensaje de texto simple al eliminar la carpeta si existe o no y ni siquiera abortará la ejecución de tu bat:
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"
Obs. 3:Lo mismo se aplica al comando de eliminación:
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"
Recursos adicionales: