Windows 10の全エディションにWindows Updateを適用する

<実験的備忘録>
Windows 10 64bit版のinstall.wim中の全エディションに2020年2月のWindows Updateを適用する。
※実験のためハードコーディングしているので注意
※対象はmsuファイルのみ、exeはdismで適用できないので扱わない。
※[Windows7/10ロールアップ適用統合ディスク作成バッチファイル](https://qiita.com/office-itou/items/79e804d796bc394b6630)が元ネタ。

**[Windows Update統合ISO作成用バッチ](https://github.com/office-itou/Windows/tree/master/Make_ISO_files)も参照願います。**

###作業用バッチ
2020/02/14 更新：適用対象ファイル追加

```powershell: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
```

###オマジナイ
万が一、異常処理が起きて作業フォルダーが削除できない時のオマジナイ。

```powershell:
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"
```