@echo off
:: =========================================================
:: DISM Health Check & Repair Script
:: Runs ScanHealth, and if needed, runs RestoreHealth
:: =========================================================

:: Ensure script is run as Administrator
>nul 2>&1 net session
if %errorlevel% neq 0 (
    echo [ERROR] Please run this script as Administrator.
    pause
    exit /b 1
)

:: Set log file path
set "LOGFILE=%~dp0DISM_HealthCheck_%DATE:~10,4%-%DATE:~4,2%-%DATE:~7,2%-%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%.log"

echo ======================================================== >> "%LOGFILE%"
echo DISM Health Check Started: %DATE% %TIME% >> "%LOGFILE%"
echo ======================================================== >> "%LOGFILE%"

echo.
echo [INFO] Running DISM /ScanHealth ...
echo [INFO] This may take several minutes.
echo.

:: Run ScanHealth and capture output
dism /Online /Cleanup-Image /ScanHealth >> "%LOGFILE%" 2>&1

:: Check ScanHealth result
findstr /C:"The component store is repairable" "%LOGFILE%" >nul
if %errorlevel%==0 (
    echo.
    echo [WARNING] Corruption detected. Running RestoreHealth...
    echo [WARNING] Corruption detected. Running RestoreHealth... >> "%LOGFILE%"
    dism /Online /Cleanup-Image /RestoreHealth >> "%LOGFILE%" 2>&1
    if %errorlevel%==0 (
        echo [SUCCESS] RestoreHealth completed successfully.
        echo [SUCCESS] RestoreHealth completed successfully. >> "%LOGFILE%"
    ) else (
        echo [ERROR] RestoreHealth failed. Check the log for details.
        echo [ERROR] RestoreHealth failed. >> "%LOGFILE%"
    )
) else (
    echo.
    echo [OK] No corruption detected. No repair needed.
    echo [OK] No corruption detected. >> "%LOGFILE%"
)

echo.
echo [INFO] DISM process completed. Log saved to:
echo %LOGFILE%
pause