: /*********************************************************************** : : Script Name: MictosoftUpdateSearch.php : : Description: : Integration of install.wim based on Knowledge base (KB) information list file : : Creator's Name: : Alphaziel : alphaziel@alphaziel.info : https://blog.alphaziel.info/ : : Notes: : : Status Information: : Run: Windows 7 x64 SP1 Command Prompt : : Change Activity: : -01 _0._0._1 2018/08/27(Mon) Made to process based on the list file : -00 _0._0._0 2018/06/22(Fri) Create. : : ***********************************************************************/ @ECHO OFF SETLOCAL ENABLEEXTENSIONS SETLOCAL ENABLEDELAYEDEXPANSION SET WIM=install_2018-08-27.wim SET WIM_LIST=Install.Integrator.List.txt SET UPD=D:\WI\W7x64\msu ; SET IDX=4 SET MNT=C:\M SET MNT_RE=H:\M SET DISM=DISM /LogPath:"%WIM%.log.txt" /LogLevel:3 SET START_TIME=%DATE% %TIME% IF NOT EXIST "%WIM%" CALL :NOT_FOUND "%WIM%" IF NOT EXIST "%WIM_LIST%" CALL :NOT_FOUND "%WIM_LIST%" IF NOT EXIST "%UPD%" CALL :NOT_FOUND "%UPD%" IF NOT EXIST "%MNT%" CALL :NOT_FOUND "%MNT%" IF NOT EXIST "%MNT_RE%" CALL :NOT_FOUND "%MNT_RE%" SET ERROR=0 FOR /F "eol=; tokens=1,2,3* delims=|||" %%A in (%WIM_LIST%) DO ( IF NOT EXIST "%UPD%\%%B" ( ECHO ファイルがありません - "%UPD%\%%B" && SET ERROR=1 ) ELSE ( ECHO ファイルがありました - "%UPD%\%%B" ) ) IF "%ERROR%" == "1" CALL :NOT_FOUND_UPD %DISM% /Get-WimInfo /WimFile:"%WIM%" IF ERRORLEVEL 1 GOTO ERROR ECHO . ECHO 統合対象となる Windows 7 のエディションのインデックス番号を確認してください ECHO インデックス番号は %IDX% です。間違っている場合は、ここで CTRL + C でコマンドスクリプトを終了して、 ECHO コマンドスクリプト内の IDX 変数の値を変更してください ECHO . PAUSE ECHO . ECHO %WIM% を %MNT% ディレクトリにマウントします ECHO . ECHO %DISM% /Mount-Image /ImageFile:"%WIM%" /Index:%IDX% /MountDir:"%MNT%" %DISM% /Mount-Image /ImageFile:"%WIM%" /Index:%IDX% /MountDir:"%MNT%" IF ERRORLEVEL 1 GOTO DISM_ERROR ECHO . FOR /F "eol=; tokens=1,2,3* delims=|||" %%A in (%WIM_LIST%) DO ( SET KB=%%A IF NOT "!KB:~,1!" == "$" ( ECHO . ECHO %%C ECHO . ECHO %DISM% /Image:"%MNT%" /Add-Package /PackagePath:"%UPD%\%%B" %DISM% /Image:"%MNT%" /Add-Package /PackagePath:"%UPD%\%%B" IF ERRORLEVEL 1 GOTO DISM_ERROR %MNT% ECHO . ) ) ECHO . ECHO %MNT%\windows\system32\recovery\winRE.wim を %MNT_RE% ディレクトリにマウントします ECHO . ECHO %DISM% /Mount-Image /ImageFile:"%MNT%\windows\system32\recovery\winRE.wim" /Index:1 /MountDir:"%MNT_RE%" %DISM% /Mount-Image /ImageFile:"%MNT%\windows\system32\recovery\winRE.wim" /Index:1 /MountDir:"%MNT_RE%" IF ERRORLEVEL 1 GOTO ERROR FOR /F "eol=; tokens=1,2,3* delims=|||" %%A in (%WIM_LIST%) DO ( SET KB=%%A IF "!KB:~,1!" == "$" ( ECHO . ECHO %%C ECHO . ECHO %DISM% /Image:"%MNT%" /Add-Package /PackagePath:"%UPD%\%%B" %DISM% /Image:"%MNT%" /Add-Package /PackagePath:"%UPD%\%%B" IF ERRORLEVEL 1 GOTO DISM_ERROR %MNT_RE% ECHO . ) ) ECHO . ECHO パッケージのリストを %WIM%.list.txt に保存 ECHO . %DISM% /Get-Packages /Image:"%MNT%" > "%WIM%.list.txt" ECHO . ECHO %DISM% /Unmount-Wim /MountDir:"%MNT_RE%" /Commit %DISM% /Unmount-Wim /MountDir:"%MNT_RE%" /Commit IF ERRORLEVEL 1 GOTO ERROR ECHO . ECHO %DISM% /Unmount-Wim /MountDir:"%MNT%" /Commit %DISM% /Unmount-Wim /MountDir:"%MNT%" /Commit IF ERRORLEVEL 1 GOTO ERROR ECHO . GOTO EOF :ERORR ECHO . ECHO 何らかのエラーが発生しました ECHO . GOTO EOF :NOT_FOUND ECHO . ECHO %1 ファイル/ディレクトリがありません ECHO . ECHO 終了します ECHO . GOTO EOF :NOT_FOUND_UPD ECHO . ECHO 見つからなかったファイルがあったので終了します ECHO . GOTO EOF :DISM_ERROR ECHO . ECHO DISM コマンドなんらかのエラーが発生しました ECHO ログは %WIM%.log.txt に保存されています ECHO 変更を破棄してマウントを解除します ECHO . ECHO %DISM% /Unmount-Wim /MountDir:"%1" /Discard %DISM% /Unmount-Wim /MountDir:"%1" /Discard ECHO . GOTO EOF :EOF SET END_TIME=%DATE% %TIME% ECHO 開始日時 - %START_TIME% ECHO 終了日時 - %END_TIME%