
Windows • CMD
Ripristino Windows Update
Arresta i servizi di aggiornamento, rinomina le cache SoftwareDistribution e catroot2 come backup e riavvia i servizi di Windows Update.
>_ sorgente
:: Titolo: Ripristino Windows Update
:: Descrizione: Arresta i servizi di aggiornamento, rinomina le cache SoftwareDistribution e catroot2 come backup e riavvia i servizi di Windows Update.
:: Categoria: windows
:: Compatibilita: Windows 10 e Windows 11
:: Amministratore: Si
@echo off
setlocal EnableExtensions EnableDelayedExpansion
title QDF - Ripristino Windows Update
color 0E
fltmc >nul 2>&1
if errorlevel 1 (
echo Richiesta dei privilegi di amministratore...
powershell.exe -NoProfile -Command "Start-Process -FilePath '%ComSpec%' -ArgumentList '/d','/c','\"%~f0\"' -Verb RunAs"
exit /b
)
cls
echo ===============================================================
echo RIPRISTINO WINDOWS UPDATE
echo ===============================================================
echo.
echo Le cache correnti verranno rinominate, non eliminate.
echo Windows le ricreera automaticamente al prossimo aggiornamento.
echo La cronologia visualizzata potrebbe essere azzerata, ma gli
echo aggiornamenti gia installati non verranno rimossi.
echo.
if exist "%SystemRoot%\SoftwareDistribution.qdf-backup\" goto :backup_esistente
if exist "%SystemRoot%\System32\catroot2.qdf-backup\" goto :backup_esistente
choice /C SN /N /M "Continuare? [S/N]: "
if errorlevel 2 exit /b
echo.
echo [1/4] Arresto dei servizi...
for %%S in (bits wuauserv cryptsvc msiserver) do (
net stop %%S /y >nul 2>&1
)
echo [2/4] Verifica dell'arresto dei servizi principali...
for %%S in (bits wuauserv cryptsvc) do (
powershell.exe -NoProfile -Command "if ((Get-Service -Name '%%S').Status -ne 'Stopped') { exit 1 }"
if errorlevel 1 (
echo ERRORE: il servizio %%S non si e arrestato.
set "ERRORE=1"
)
)
if defined ERRORE goto :riavvia_servizi
echo [3/4] Creazione dei backup delle cache...
if exist "%SystemRoot%\SoftwareDistribution\" (
ren "%SystemRoot%\SoftwareDistribution" "SoftwareDistribution.qdf-backup" || set "ERRORE=1"
)
if exist "%SystemRoot%\System32\catroot2\" (
ren "%SystemRoot%\System32\catroot2" "catroot2.qdf-backup" || set "ERRORE=1"
)
:riavvia_servizi
echo [4/4] Riavvio dei servizi...
for %%S in (cryptsvc bits wuauserv msiserver) do (
net start %%S >nul 2>&1
)
echo.
if defined ERRORE (
color 0C
echo Procedura terminata con uno o piu errori.
echo Nessun backup preesistente e stato sovrascritto.
) else (
color 0A
echo Ripristino completato. Provare nuovamente Windows Update.
echo I backup .qdf-backup possono essere rimossi manualmente in seguito.
)
goto :fine
:backup_esistente
color 0C
echo ERRORE: esiste gia un backup creato da una precedente esecuzione.
echo Verificarlo o rimuoverlo manualmente prima di ripetere la procedura.
:fine
echo.
pause
endlocal
exit /b