<実験的備忘録>
Windows 10 64bit版のinstall.wim中の全エディションに2020年2月のWindows Updateを適用する。
※実験のためハードコーディングしているので注意
※対象はmsuファイルのみ、exeはdismで適用できないので扱わない。
※Windows7/10ロールアップ適用統合ディスク作成バッチファイルが元ネタ。
Windows Update統合ISO作成用バッチも参照願います。
作業用バッチ
2020/02/14 更新:適用対象ファイル追加
w10.cmd
Rem ***************************************************************************
@Echo Off
Cls
Rem *** 作業開始 **************************************************************
:START
Echo *** 作業開始 ******************************************************************
Echo %DATE% %TIME%
SetLocal EnableExtensions
SetLocal EnableDelayedExpansion
Rem --- 作業環境確認 ----------------------------------------------------------
If /I "%USERNAME%" NEQ "Administrator" (
If /I "%SESSIONNAME%" NEQ "" (
Echo 管理者特権で実行して下さい。
GoTo DONE
)
)
Rem --- 環境変数設定 ----------------------------------------------------------
For /F "usebackq delims=" %%I In (`Echo %0`) Do (
Set WRK_DIR=%%~dpI
Set WRK_DIR=!WRK_DIR:~0,-1!
Set WRK_FIL=%%~nxI
Set WRK_NAM=%%~nI
)
Set NOW_DAY=%date:~0,4%%date:~5,2%%date:~8,2%
If /I "%time:~0,1%" EQU " " (
Set NOW_TIM=0%time:~1,1%%time:~3,2%%time:~6,2%
) Else (
Set NOW_TIM=%time:~0,2%%time:~3,2%%time:~6,2%
)
For /F "tokens=2 usebackq delims=\" %%I In ('!WRK_DIR!') Do (Set WRK_TOP=%%~dI\%%~I)
:SETTING
Rem *** 作業環境設定 **********************************************************
Set DEF_TOP=C:\WimWK
If /I "!WRK_TOP!" EQU "!DEF_TOP!" (
Set WIM_TOP=!DEF_TOP!
) Else (
:INP_FOLDER
Set WIM_TOP=!DEF_TOP!
Set /P WIM_TOP=作業環境のフォルダーを指定して下さい。(規定値[!WIM_TOP!])
If /I "!WIM_TOP!" EQU "" (Set WIM_TOP=C:\WimWK)
Set INP_ANS=N
Echo "!WIM_TOP!"
Set /P INP_ANS=上記でよろしいですか? [Y/N] ^(Yes/No^)(規定値[!INP_ANS!])
If /I "!INP_ANS!" NEQ "Y" (GoTo INP_FOLDER)
)
Rem ***************************************************************************
Set DVD_SRC=H:\
Rem Set WIM_TOP=C:\WimWK
Set WIM_PKG=!WIM_TOP!\pkg
Set WIM_WRK=!WIM_TOP!\wrk
Set WIM_WUD=!WIM_PKG!\w10\x64
Set WIM_IMG=!WIM_WRK!\w10\x64\img
Set WIM_MNT=!WIM_WRK!\w10\x64\mnt
If Exist "!WIM_IMG!" (RmDir /S /Q "!WIM_IMG!")
If Exist "!WIM_MNT!" (RmDir /S /Q "!WIM_MNT!")
MkDir "!WIM_IMG!"
MkDir "!WIM_MNT!"
Robocopy /J /MIR /A-:RHS /NDL /NC /NJH /NJS /NFL "!DVD_SRC!\" "!WIM_IMG!"
For /F "tokens=1* usebackq" %%I In (`Dism /Get-WimInfo /WimFile:"!WIM_IMG!\sources\install.wim" ^| FindStr "名前:"`) Do (
Set WIN_TYP=%%~J
Echo *** %DATE% %TIME% : [!WIN_TYP!] ***
Dism /Mount-WIM /WimFile:"!WIM_IMG!\sources\install.wim" /Name:"!WIN_TYP!" /MountDir:"!WIM_MNT!" || GoTo :DONE
Dism /Image:"!WIM_MNT!" /Add-Package /IgnoreCheck /PackagePath:"!WIM_WUD!\windows10.0-kb4538674-x64.msu" || GoTo :DONE
Dism /Image:"!WIM_MNT!" /Add-Package /IgnoreCheck /PackagePath:"!WIM_WUD!\windows10.0-kb4534132-x64-ndp48.msu" || GoTo :DONE
Dism /Image:"!WIM_MNT!" /Add-Package /IgnoreCheck /PackagePath:"!WIM_WUD!\windows10.0-kb4524244-x64.msu" || GoTo :DONE
Dism /Image:"!WIM_MNT!" /Add-Package /IgnoreCheck /PackagePath:"!WIM_WUD!\windows10.0-kb4537759-x64.msu" || GoTo :DONE
Dism /Image:"!WIM_MNT!" /Add-Package /IgnoreCheck /PackagePath:"!WIM_WUD!\windows10.0-kb4532693-x64.msu" || GoTo :DONE
Dism /UnMount-Wim /MountDir:"!WIM_MNT!" /Commit || GoTo :DONE
)
Rem *** 作業終了 **************************************************************
:DONE
EndLocal
Echo *** 作業終了 ******************************************************************
Echo %DATE% %TIME%
Echo [Enter]を押下して下さい。
Pause > Nul 2>&1
Echo On
オマジナイ
万が一、異常処理が起きて作業フォルダーが削除できない時のオマジナイ。
TakeOwn /F "C:\WimWK\wrk\w10\x64\mnt" /A /R /D Y > Nul
ICacls "C:\WimWK\wrk\w10\x64\mnt" /inheritance:e /T /C /L /Q > Nul
RmDir /S /Q "C:\WimWK\wrk\w10\x64\mnt"