Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @echo off
- color 1f
- SetLocal EnableDelayedExpansion
- :Begin UAC check and Auto-Elevate Permissions
- :-------------------------------------
- REM --> Check for permissions
- >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
- REM --> If error flag set, we do not have admin.
- if '%errorlevel%' NEQ '0' (
- echo:
- echo Requesting Administrative Privileges...
- echo Press YES in UAC Prompt to Continue
- echo:
- goto UACPrompt
- ) else ( goto gotAdmin )
- :UACPrompt
- echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
- echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
- "%temp%\getadmin.vbs"
- exit /B
- :gotAdmin
- if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
- pushd "%CD%"
- CD /D "%~dp0"
- :--------------------------------------
- Title Windows System File Restore -murphy78
- :REPAIRIT
- ECHO -------------------------------------------------------------------------------
- echo. Windows System File Restore
- ECHO -------------------------------------------------------------------------------
- ECHO This script will repair system files by using install source files.
- ECHO If no install source files are found, it will try to use online mode,
- ECHO but it should be noted that online mode rarely works.
- ECHO -------------------------------------------------------------------------------
- CHOICE /c YN /n /M "Run this script? (Y/N): "
- IF %ERRORLEVEL% NEQ 1 EXIT
- SET INSTALLIMAGE=""
- SET SPLIT=0
- SET ESDFILE=0
- FOR %%i IN (Z Y X W V U T S R Q P O N M L K J I H G F E D C B A) DO (IF EXIST "%%i:\Sources\install.wim" SET INSTALLIMAGE="%%i:\Sources\install.wim"&GOTO :FOUNDIMG)
- FOR %%i IN (Z Y X W V U T S R Q P O N M L K J I H G F E D C B A) DO (IF EXIST "%%i:\Sources\install.esd" SET INSTALLIMAGE="%%i:\Sources\install.esd"&SET ESDFILE=1&GOTO :FOUNDIMG)
- FOR %%i IN (Z Y X W V U T S R Q P O N M L K J I H G F E D C B A) DO (IF EXIST "%%i:\Sources\install.swm" SET INSTALLIMAGE="%%i:\Sources\install.swm"&SET SPLIT=1&SET SPLITPATTERN="%%i:\Sources\install*.swm"&GOTO :FOUNDIMG)
- :IF none of the install.wim, esd, or swm, files were found in a sources\ directory, just do normal online restore
- IF NOT EXIST !INSTALLIMAGE! (
- CLS
- ECHO ===============================================================================
- echo. No install image found: Attempting online restore
- ECHO -------------------------------------------------------------------------------
- dism /online /cleanup-image /restorehealth
- GOTO :FINISHED
- )
- :FOUNDIMG
- CLS
- ECHO Scanning !INSTALLIMAGE! to create the index list file...
- IF EXIST "%TEMP%\IMAGELIST.TXT" del /q/f "%TEMP%\IMAGELIST.TXT"
- IF EXIST "%TEMP%\install.wim" del /q/f "%TEMP%\install.wim"
- for /f "tokens=2 delims=: " %%a in ('dism /Get-WimInfo /WimFile:!INSTALLIMAGE! ^| find /i "Index"') do (
- for /f "tokens=2 delims=:" %%g in ('dism /Get-WimInfo /WimFile:!INSTALLIMAGE! /Index:%%a ^| find /i "Name"') do (ECHO %%a.%%g>>%TEMP%\IMAGELIST.TXT))
- ECHO ===============================================================================
- ECHO =============================== INDEX SELECTION ===============================
- :Display-Indexes
- TYPE %TEMP%\IMAGELIST.TXT
- ECHO ========================== SELECT INDEX OR Q TO EXIT ==========================
- SET INPUT=
- SET /P INPUT="Please select an Index Number or Q to exit: "
- IF NOT DEFINED INPUT GOTO :IMAGESELECTION
- IF /I '!INPUT!'=='Q' GOTO :FINISHED
- SET INDEX=!INPUT!
- :CONFIRMINDEX
- echo.
- Echo You have selected Index: %INDEX%
- dism /get-wiminfo /wimfile:%INSTALLIMAGE% /index:%INDEX%>NUL 2>NUL
- IF %ERRORLEVEL% NEQ 0 GOTO :FOUNDIMG
- choice /c yn /n /m "Are you sure you wish to use this index? (Y/N): "
- IF !ERRORLEVEL! NEQ 1 GOTO :FOUNDIMG
- IF %SPLIT%==1 GOTO :FOUNDSPLIT
- IF %ESDFILE%==1 GOTO :FOUNDESD
- :Using normal wim
- ECHO -------------------------------------------------------------------------------
- echo. Repairing System Files
- ECHO -------------------------------------------------------------------------------
- dism /online /cleanup-image /restorehealth:wim:"%INSTALLIMAGE%":1
- GOTO :FINISHED
- :FOUNDSPLIT
- ECHO -------------------------------------------------------------------------------
- echo. Script is exporting split-wim file to a normal wim
- echo. This will take a while
- ECHO -------------------------------------------------------------------------------
- dism /export-image /sourceimagefile:%INSTALLIMAGE% /swmfile:%SPLITPATTERN% /sourceindex:%INDEX% /destinationimagefile:%TEMP%\install.wim /compress:max
- IF %ERRORLEVEL% NEQ 0 (ECHO There was a problem exporting this index to temp folder&pause&GOTO :FINISHED)
- ECHO -------------------------------------------------------------------------------
- echo. Repairing System Files
- ECHO -------------------------------------------------------------------------------
- dism /online /cleanup-image /restorehealth:wim:"%TEMP%\install.wim":1
- GOTO :FINISHED
- :FOUNDESD
- ECHO -------------------------------------------------------------------------------
- echo. Script is exporting esd file to a normal wim
- echo. This will take a while
- ECHO -------------------------------------------------------------------------------
- dism /export-image /sourceimagefile:%INSTALLIMAGE% /sourceindex:%INDEX% /destinationimagefile:%TEMP%\install.wim /compress:max
- IF %ERRORLEVEL% NEQ 0 (ECHO There was a problem exporting this index to temp folder&pause&GOTO :FINISHED)
- ECHO -------------------------------------------------------------------------------
- echo. Repairing System Files
- ECHO -------------------------------------------------------------------------------
- dism /online /cleanup-image /restorehealth:wim:"%TEMP%\install.wim":1
- GOTO :FINISHED
- :FINISHED
- IF EXIST "%TEMP%\IMAGELIST.TXT" del /q/f "%TEMP%\IMAGELIST.TXT"
- IF EXIST "%TEMP%\install.wim" del /q/f "%TEMP%\install.wim"
- ECHO -------------------------------------------------------------------------------
- echo. Finished
- ECHO -------------------------------------------------------------------------------
- echo Press any key to exit...
- pause>NUL
- goto :EOF
- ============================================================================================================================================
- Note: System_File_Repair.cmd
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement