Advertisement
slyfox1186

dism-mount-offline-image-and-run-repairs.bat

Dec 18th, 2021 (edited)
2,652
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 5.62 KB | None | 0 0
  1. @ECHO OFF
  2. SETLOCAL ENABLEEXTENSIONS
  3. COLOR 0A
  4. TITLE REPAIR WINDOWS USING AN OFFLINE IMAGE
  5.  
  6. :------------------------------------------------------------------------------------------------------------------------
  7.  
  8. REM Created by: SlyFox1186
  9. REM Pastebin: https://pastebin.com/u/slyfox1186
  10.  
  11. REM THIS SCRIPT WILL HELP YOU REPAIR WINDOWS WHILE
  12. REM ALSO LIMITING THE INTERNET'S ACCESS BY USING AN
  13. REM OFFLINE MOUNTED IMAGE OF WINDOWS.
  14.  
  15. REM BEFORE RUNNING THIS SCRIPT LOCATE AND PLACE EITHER
  16. REM "install.wim” or “install.esd" IN THE SAME FOLDER AS THIS SCRIPT.
  17. REM THE FILES CAN BE FOUND INSIDE A WINDOWS ".ISO" FILE.
  18.  
  19. REM IT IS HIGHLY RECOMMENDED THAT YOU USE THE LATEST ISO FILE AVAILABLE
  20. REM WHEN SOURCING THE ESD OR WIM FILES MENTIONED ABOVE.
  21.  
  22. REM WIN 10 ISO DOWNLOAD: https://www.microsoft.com/en-us/software-download/windows10
  23. REM WIN 11 ISO DOWNLOAD: https://www.microsoft.com/software-download/windows11
  24.  
  25. :------------------------------------------------------------------------------------------------------------------------
  26.  
  27. PUSHD "%~dp0"
  28. IF NOT "%1"=="MAX" START /MAX CMD /D /C %0 MAX & GOTO :EOF
  29.  
  30. :------------------------------------------------------------------------------------------------------------------------
  31.  
  32. REM DEFINE VARIABLES
  33. SET ROOT=%SYSTEMDRIVE%\WinMount
  34. SET MDIR=%ROOT%\Windows
  35. SET ESD=%CD%\install.esd
  36. SET WIM=%CD%\install.wim
  37.  
  38. :----------------------------------------------------------------------------------
  39.  
  40. REM CREATE DIRECTORY IF NOT EXIST
  41. IF NOT EXIST "%MDIR%" IF EXIST "%ROOT%" RD /S /Q "%ROOT%"
  42.  
  43. :----------------------------------------------------------------------------------
  44.  
  45. REM KILL ANY RUNNING INSTANCES OF DISM OR TIWORKER TO AVOID ERRORS
  46. TASKLIST | FINDSTR "Dism.exe TiWorker.exe" >NUL && TASKKILL /F /IM "Dism.exe" /IM "TiWorker.exe" /T >NUL 2>&1
  47.  
  48. :------------------------------------------------------------------------------------------------
  49.  
  50. REM CHECK IF WIM EXISTS
  51. IF EXIST "%ESD%" (SET "FTYPE=%ESD%" & CALL :WIM_NOT_EXIST & GOTO :EOF) ELSE (CALL :CHOOSE_TYPE & GOTO :EOF)
  52.  
  53. :WIM_NOT_EXIST
  54. ECHO EITHER CONVERT THE WIM TO ESD OR SKIP TO MOUNT/UNMOUNT/REPAIR: & ECHO=
  55. ECHO [1] Convert: install.esd ^>^> install.wim
  56. ECHO [2] Skip to mount/unmount/repair
  57. ECHO [3] Exit & ECHO=
  58.  
  59. CHOICE /C 123 /N & CLS
  60.  
  61. IF ERRORLEVEL 3 EXIT
  62. IF ERRORLEVEL 2 GOTO CHOOSE_TYPE
  63. IF ERRORLEVEL 1 (SET "FTYPE=%ESD%" & SET "FLAG_01=%WIM%" & CALL :CONVERT_FORMAT & GOTO :EOF)
  64. EXIT
  65.  
  66. :------------------------------------------------------------------------------------------------
  67. :CONVERT_FORMAT
  68. :------------------------------------------------------------------------------------------------
  69.  
  70. REM CONVERT ESD TO WIM FILE
  71. :RETRY1
  72. CLS
  73. SET INDEX=
  74. DISM /Get-ImageInfo /ImageFile:"%ESD%"
  75. ECHO=
  76. SET /P "INDEX=Please select an index number from the list above that matches your Windows version: "
  77. IF "%INDEX%" LSS "1" (
  78.     ECHO Please enter an acceptable value that matches your Windows version...
  79.     ECHO=
  80.     PAUSE
  81.     GOTO RETRY1
  82. )
  83. CLS
  84. ECHO Creating: "%FLAG_01%"
  85. DISM /Export-Image /SourceImageFile:"%ESD%" /SourceIndex:%INDEX% /DestinationImageFile:"%FLAG_01%" /Compress:Max /CheckIntegrity
  86. ECHO Created: "%FLAG_01%"
  87.  
  88. :------------------------------------------------------------------------------------------------
  89. :CHOOSE_TYPE
  90. :------------------------------------------------------------------------------------------------
  91.  
  92. REM CHOOSE WHICH FILE TYPE TO USE WHEN MOUNTING THE OFFLINE IMAGE
  93. ECHO CHOOSE WHICH FILE TYPE TO USE WHEN MOUNTING THE OFFLINE IMAGE: & ECHO=
  94. ECHO [1] ESD
  95. ECHO [2] WIM
  96. ECHO [3] EXIT & ECHO=
  97.  
  98. CHOICE /C 123 /N & CLS
  99.  
  100. IF ERRORLEVEL 3 EXIT
  101. IF ERRORLEVEL 2 IF EXIST "%WIM%" (
  102.         SET "INDEX=1"
  103.         SET "FTYPE=%WIM%"
  104.         CALL :MOUNT_OFFLINE_IMAGE %INDEX% %FTYPE%
  105.         GOTO :EOF
  106.       ) ELSE (
  107.         ECHO Essential File: install.wim is missing!
  108.         ECHO=
  109.         ECHO Press [Enter] to fix the issue or close the window to exit.
  110.         ECHO=
  111.         PAUSE
  112.         SET "FTYPE=%ESD%"
  113.         SET "FLAG_01=%WIM%"
  114.         CALL :CONVERT_FORMAT
  115.         GOTO :EOF
  116. )
  117. IF ERRORLEVEL 1 (
  118.     SET "INDEX=6"
  119.     SET "FTYPE=%ESD%"
  120.     CALL :MOUNT_OFFLINE_IMAGE %INDEX% %FTYPE%
  121.     GOTO :EOF
  122. )
  123.  
  124. :------------------------------------------------------------------------------------------------
  125. :MOUNT_OFFLINE_IMAGE
  126. :------------------------------------------------------------------------------------------------
  127.  
  128. REM CHOOSE WHETHER TO MOUNT, UNMOUNT, OR SKIP TO REPAIRS
  129. :RETRY3
  130. CLS
  131. ECHO Choose next step: & ECHO=
  132. ECHO [1] Mount Image
  133. ECHO [2] Unmount Image
  134. ECHO [3] Run offline repairs using the mounted image
  135. ECHO [4] Exit & ECHO=
  136.  
  137. CHOICE /C 1234 /N & CLS
  138.  
  139. IF ERRORLEVEL 4 EXIT
  140. IF ERRORLEVEL 3 GOTO RUN_REPAIRS
  141. IF ERRORLEVEL 2 (
  142.     DISM /Unmount-Image /MountDir:"%ROOT%" /Discard
  143.     RD /S /Q "%ROOT%" >NUL
  144.     GOTO :EOF
  145.     )
  146. )
  147. IF ERRORLEVEL 1 (
  148.     IF NOT EXIST "%ROOT%" MD "%ROOT%"
  149.     DISM /Mount-Image /ImageFile:"%FTYPE%" /Index:"%INDEX%" /MountDir:"%ROOT%
  150.     ECHO=
  151.     TIMEOUT 2 >NUL
  152.     GOTO :EOF
  153. )
  154.  
  155. :------------------------------------------------------------------------------------------------
  156. :RUN_REPAIRS
  157. :------------------------------------------------------------------------------------------------
  158.  
  159. REM REPAIR WINDOWS USING THE MOUNTED OFFLINE IMAGE
  160.  
  161. IF EXIST "%MDIR%" (
  162.     DISM /Online /Cleanup-Image /RestoreHealth /StartComponentCleanup
  163.     ECHO=
  164.     DISM /Online /Cleanup-Image /RestoreHealth /Source:"%MDIR%" /LimitAccess
  165.     ECHO=
  166.     SFC /SCANNOW
  167.     ECHO=
  168.     SFC /SCANNOW
  169.     ECHO=
  170.     ECHO REPAIRS ARE COMPLETE! & ECHO=
  171.     PAUSE
  172.     GOTO :EOF
  173.   ) ELSE (
  174.     ECHO YOU MUST MOUNT THE IMAGE BEFORE RUNNING REPAIRS... & ECHO=
  175.     PAUSE
  176.     GOTO RETRY3
  177. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement