QDF QDF.it
Controlla. Analizza. Risolvi.
Registrati
Script QDF
← Torna agli script

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.

CompatibilitàWindows 10 e Windows 11PrivilegiRichiede amministratoreFile[QDF.it] windows - Ripristino Windows Update.cmd
Scarica script ↓
>_ 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