Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @echo off
- setlocal EnableDelayedExpansion
- rem ────────────────────────────────────────────────────────────────────
- rem 1) SELF‑INSTALLATION & SCHEDULED TASK (runs only on first launch)
- rem ────────────────────────────────────────────────────────────────────
- set "TASK_NAME=SFC_DISM_Auto_Repair"
- set "INSTALL_DIR=%ProgramData%\%TASK_NAME%"
- set "LOG_DIR=%INSTALL_DIR%\Logs"
- rem ─ Copy this script into ProgramData if it’s not already there
- if /I not "%~dp0"=="%INSTALL_DIR%\" (
- md "%INSTALL_DIR%" 2>nul
- copy "%~f0" "%INSTALL_DIR%\%~nx0" >nul
- md "%LOG_DIR%" 2>nul
- rem ─ Create a Task Scheduler entry to run the copied script at logon (3‑minute delay)
- schtasks /Create /TN "%TASK_NAME%" ^
- /TR "\"%INSTALL_DIR%\%~nx0\"" ^
- /SC ONLOGON /DELAY 0003:00 /RL HIGHEST /F >nul
- echo Installed scheduled task "%TASK_NAME%" to run on logon with 3‑minute delay.
- echo Launching the installed copy...
- start "" "%INSTALL_DIR%\%~nx0%"
- exit /b
- )
- rem ────────────────────────────────────────────────────────────────────
- rem 2) DELAY BEFORE REPAIR
- rem ────────────────────────────────────────────────────────────────────
- echo Waiting 3 minutes before system repair...
- timeout /t 180 /nobreak >nul
- rem ────────────────────────────────────────────────────────────────────
- rem 3) SET UP LOG FILENAME (zero‑padded HHMM)
- rem ────────────────────────────────────────────────────────────────────
- for /f "tokens=1-2 delims=:." %%H in ("%time%") do (
- set "H=%%H" & set "M=%%I"
- )
- if !H! lss 10 set "H=0!H!"
- set "DATESTAMP=%DATE:~10,4%-%DATE:~4,2%-%DATE:~7,2%"
- set "TIMESTAMP=!H!!M!"
- set "LOG_FILE=%LOG_DIR%\repair_!DATESTAMP!_!TIMESTAMP!.log"
- rem ────────────────────────────────────────────────────────────────────
- rem 4) RUN DISM & SFC, LOG EVERYTHING
- rem ────────────────────────────────────────────────────────────────────
- echo ==================================================== >> "!LOG_FILE!"
- echo RUN AT %DATE% %TIME:~0,8% >> "!LOG_FILE!"
- echo ==================================================== >> "!LOG_FILE!"
- echo Running DISM /online /cleanup-image /restorehealth >> "!LOG_FILE!" 2>&1
- dism /online /cleanup-image /restorehealth >> "!LOG_FILE!" 2>&1
- echo. >> "!LOG_FILE!"
- echo Running SFC /scannow >> "!LOG_FILE!" 2>&1
- sfc /scannow >> "!LOG_FILE!" 2>&1
- rem ────────────────────────────────────────────────────────────────────
- rem 5) ERROR HANDLING & FINALIZE
- rem ────────────────────────────────────────────────────────────────────
- if %errorlevel% neq 0 (
- echo [ERROR] Command(s) failed with exit code %errorlevel%. >> "!LOG_FILE!"
- ) else (
- echo [OK] All commands completed successfully. >> "!LOG_FILE!"
- )
- echo Completed at %DATE% %TIME:~0,8% >> "!LOG_FILE!"
- echo ==================================================== >> "!LOG_FILE!"
- rem ─ Give you 10s to see the “log written” message if you’re watching
- echo.
- echo Repair log written to "!LOG_FILE!"
- timeout /t 10 /nobreak >nul
- endlocal
- exit /b
Advertisement
Add Comment
Please, Sign In to add comment