この不親切な手順に救援を 其の2


KB4074588 の被害に遭われた方が多いと思います。
Ask CORE のブログで対処方法が出ていましたが
オフラインでの対応手順をバッチ化してみました。

やり方は
① インストールメディアをUSBメモリで作成。
  ※ 8GBでOK。
  ※ インストール先と同じOSで同じビット数で作成。
② 「Z.cmd」と「C:\Windows\system32\CHOICE.exe」をUSBメモリのルートにコピー。
  ※ コピー先は、Setup.exe のある所です。
③ USBメモリで起動して、言語選択画面で Shift + F10 を押します。
④ コマンドプロンプトが表示されたら「D:¥z」(半角)と入力後、Enter。
  バッチが起動しなかったら「E:¥z」、「F:¥z」、「G:¥z」のように
  ドライブレターを変更して実行して下さい。
⑤ バッチが起動したら、OSのドライブを聞かれるので「C」等を入力。
⑥ パッケージが表示され、アンインストールを聞かれるので
  目的のパッケージが表示されるまで毎回「N」を押し、最後に「Y」を押す。
⑦ 全パッケージの表示が終わると、シャットダウン等を聞かれるので「S」を押す。

更新プログラム適用後、USB デバイス(キーボード及びマウス)が使用できなくなる事象について
https://blogs.technet.microsoft.com/askcorejp/2018/02/23/usb_device_problem_after_update/

z.cmd
@echo off
SetLocal EnableDelayedExpansion

powercfg /? > nul 2> nul && call powercfg /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c

CLS
echo;★ ★ ★ 適用されたアップデートをアンインストールする (要:CHOICE.exe) ★ ★ ★
echo;
echo; Windows のあるドライブを探しています・・・
echo;

            Set        "Select_Drive= "
for                   %%D in ( C D E F G H I J K L M N O P Q Q S T U V W   Y Z ) do (
   if      exist      %%D:\ (
       if      exist "%%D:\Windows\system32\cmd.exe" (
              echo;%%D 】ドライブに cmd.exe が在ります。多分、これが OS の ドライブかも。
       )
       Call Set         Select_Drive=%%Select_Drive%%%%%%D
   )
)

echo;
echo;  [C,D,E]? のような選択肢が表示されたら
echo;
echo;  C を選択する場合、「 C 」キーだけ押して下さい。
echo;

"%~dp0choice"       /c %Select_Drive% /m " OS のドライブを指定して下さい "
Call Set OSのドライブ=%%Select_Drive:~!errorlevel!,1%%

echo;
echo;適用されたアップデートを探索しながら選択してアンインストールします。
echo;
echo;  パッケージが表示されたら
echo;
echo;  アンインストール しない 場合、[ N ] キーだけ押す。もしくは60秒待つ。
echo;
echo;  アンインストール  する  場合、[ Y ] キーだけ押す。
echo;

                                    Set Image-and-Scratch=/Image:%OSのドライブ%:\ /ScratchDir:%OSのドライブ%:\
for /f "delims=" %%0 in         ('Dism %Image-and-Scratch% /Get-Packages') do (
        set  Msg=%%0
   if      "!Msg:~0,11!"=="パッケージ ID : "                                         set "PackageID=!Msg:パッケージ ID : =!"
   if      "!Msg:~0,16!"=="リリースの種類 : Update" (
       "%~dp0choice" /c YN /t 60 /d N                                              /m " !PackageID!  を アンインストールしますか "
       echo;
       if      !ERRORLEVEL! EQU 1 Dism %Image-and-Scratch% /Remove-Package /PackageName:"!PackageID!" & echo;
   )
)

"%~dp0choice" /c SRT /m "探索終了。この後どうする? シャットダウン:S、再起動:R、取り合えずこの処理を終わる:T "

if      !ERRORLEVEL! EQU 1                          Wpeutil         Shutdown
if      !ERRORLEVEL! EQU 2                          Wpeutil                    Reboot