@echo off title %~nx0 REM ################################################################################## REM * Windows RE iso イメージ作成 REM http://www10.plala.or.jp/palm84/archives/commandline/backup/WinRE_Make-ISO.bat.txt REM https://eu7w9wsmf6a74xyjdfzl3q-on.drv.tw/archives/commandline/backup/WinRE_Make-ISO.bat.txt REM ################################################################################## REM ### UAC Check REM ##################################### set Policies=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System for /f "usebackq tokens=3" %%x in (`reg query %Policies% /v EnableLUA 2^>nul ^| findstr /i EnableLUA`) do set "EnableLUA=%%x" if "%EnableLUA%"=="0x1" ( if /i not "%cd%"=="%windir%\system32" GOTO UAC ) pushd %~dp0 REM ### [ x86 | amd64 ] REM # OSに合わせてアーキテクチャ選択 if /i "%PROCESSOR_ARCHITECTURE%"=="IA64" GOTO IA64 if defined ProgramW6432 ( set ARC=amd64 ) else ( set ARC=x86 ) REM # 直接指定 REM set ARC=x86 REM set ARC=amd64 REM ##################################### REM ### Check Windows AIK REM ##################################### if not exist "%ProgramFiles%\Windows AIK\" GOTO NO_AIK set "AIK=%ProgramFiles%\Windows AIK" set "path=%path%;%ProgramFiles%\Windows Imaging\;%AIK%\Tools\PETools\;%AIK%\Tools\PETools\..\%PROCESSOR_ARCHITECTURE%;%AIK%\Tools\PETools\..\%PROCESSOR_ARCHITECTURE%\Servicing" for /f "delims=" %%I in ("dism.exe") do if not "%%~$PATH:I"=="" set dism=ok REM ##################################### REM ### START REM ##################################### cls echo. echo ************************************************************** echo ************************************************************** echo ************************************************************** echo ***** ***** echo * === Windows RE 【%ARC%】isoイメージの作成! === * echo ***** ***** echo * === * ファイル名は WinRE%ARC%.iso === * echo * === * HD上に展開するファイルは最大で 1.2 GB 程です。=== * echo ***** ***** echo ***** ***** echo ************************************************************** echo ************************************************************** echo ************************************************************** echo. echo 開始しますか? 中断は xボタン or Ctrl-C echo. echo *** 何かキーを押すと続行します *** pause >nul REM ##################################### REM ### DVD REM ##################################### :Drive set DVD= cls echo: echo ============================================================== echo: echo * DVD ドライブ、または 全体ファイルを保存したディレクトリを echo 指定シテクダサイ echo: echo * ドライブなら D: とか echo * ディレクトリなら D:\VistaDVD とか echo: echo * ソコから \sources\boot.wim を検索シマス! echo: echo * 中断するには 99 を入れてEnter * echo: echo ============================================================== echo: set /p DVD= ドライブ or ディレクトリ名: echo: if "%DVD%"=="99" GOTO CANCEL if exist "%DVD%\sources\boot.wim" ( GOTO ASK ) else ( echo: echo !%DVD%\sources\boot.wim は存在せぬようです! echo: echo *** 何かキーを押すと戻ります *** echo: pause >nul GOTO Drive ) REM ##################################### REM ### ASK REM ##################################### :ASK set target= cls echo: echo ============================================================== echo: echo * ファイルを作成するディレクトリを指定してください echo: echo *** 指定先に【WinRE%ARC%】ディレクトリを作成します。 echo *** 無指定だとここに【WinRE%ARC%】ディレクトリを作成します。 echo *** 既存【WinRE%ARC%】ディレクトリはリネームします。 echo *** ! スペースを含むパスはならぬのです ! echo: echo *** 中断するには 99 を入れてEnter *** echo: echo ============================================================== echo: set /p target= ディレクトリ名: echo: for /f "usebackq delims=" %%I in ('%target%') do set target=%%~I if "%target%"=="99" GOTO CANCEL if "%target%"=="" set target=%cd% echo %target% | findstr : | findstr /v \\ >nul && set "target=%target%\" for /f "delims=" %%I in ("%target%") do set target=%%~fI if not exist "%target%" GOTO WAIT for /f "delims=" %%I in ("%target%") do set dir_test=%%~aI if not "%dir_test:~0,1%"=="d" ( echo * %target% はディレクトリじゃないです! && GOTO WAIT ) set makedir=%target%\WinRE%ARC% set makedir=%makedir:\\=\% GOTO ASK2 :WAIT echo: echo ============================================================== echo ! %target% ディレクトリは存在しません! echo ============================================================== echo: echo *** 何かキーを押すと戻ります *** pause >nul GOTO ASK :ASK2 REM ##################################### REM ### KAKUNINNIN REM ##################################### cls set choice2= echo: echo ============================================================== echo === === echo === ============= イメージ作成を始めます ============= === echo === === echo ============================================================== echo === === echo * ファイルを作成するディレクトリ === echo %makedir% echo === === echo === * よろしいですか? * === echo === === echo === *** Y (y) : おk *** === echo === *** N (n) : 戻ります *** === echo === === echo === *** 中断するには 99 を入れてEnter *** === echo ============================================================== echo: set /p choice2= [99, y,n]: if /i "%choice2%"=="y" GOTO Check if "%choice2%"=="99" GOTO CANCEL if /i "%choice2%"=="n" GOTO ASK GOTO ASK2 :Check if not exist "%makedir%" GOTO MAKE REM ### Old fILe RENAME for %%I in ("%makedir%") do set bt=%%~tI set bt=%bt: =% set bt=%bt:~-13,2%%bt:~-10,2%%bt:~-7,2%_%bt:~-5,2%%bt:~-2,2%_%RANDOM% for %%I in ("%makedir%") do set backname=%%~nI_%bt%%%~xI ren "%makedir%" %backname% if ERRORLEVEL 1 GOTO ERROR echo: echo ****** ディレクトリ・リネーム OK ****** echo: REM ##################################### REM ### MAKE REM ##################################### :MAKE REM ### * 作業フォルダを作成 * echo: echo ============================================================== echo * 作業フォルダを作成 echo ============================================================== echo: REM # ######################################################### # REM # copype [x86 | amd64] destination REM # ######################################################### # call copype.cmd %ARC% "%makedir%" if ERRORLEVEL 1 GOTO ERROR echo ****** OK ****** REM ### * WinRE wimイメージを mountフォルダにマウント * echo: echo ============================================================== echo * WinRE wimイメージを mountフォルダにマウント echo ============================================================== echo: REM # ######################################################### # REM # IMAGEX [FLAGS] /APPLY image_file image_number | image_name image_path REM # ######################################################### # REM # ######################################################### # REM # IMAGEX [FLAGS] /EXPORT src_file src_number | src_name dest_file dest_name REM # ######################################################### # imagex /export /boot "%DVD%\sources\boot.wim" 2 "%makedir%\winre.wim" "Windows Recovery Environment" if ERRORLEVEL 1 ( imagex /export /boot "%DVD%\sources\boot.wim" 1 "%makedir%\winre.wim" "Windows Recovery Environment" ) if ERRORLEVEL 1 GOTO ERROR echo ****** エクスポート OK ****** REM # ######################################################### # REM # IMAGEX [FLAGS] /MOUNTRW [image_file image_number | image_name image_path] REM # ######################################################### # imagex /mountrw "%makedir%\winre.wim" 1 "%makedir%\mount" if ERRORLEVEL 1 GOTO ERROR echo ****** マウント OK ****** REM ### * ファイル追加 * echo: echo ============================================================== echo * ファイル追加 echo ============================================================== echo: REM ### * imagex.exe 追加 copy "%AIK%\Tools\%ARC%\imagex.exe" "%makedir%\mount\Windows" if ERRORLEVEL 1 GOTO ERROR echo ****** imagex.exe コピーOK ****** REM ### * BootSect.exe 追加 if not exist "%makedir%\mount\Windows\System32\BootSect.exe" ( copy "%AIK%\Tools\PETools\%ARC%\BootSect.exe" "%makedir%\mount\Windows\System32\" if ERRORLEVEL 1 GOTO ERROR echo ****** BootSect.exe コピーOK ****** ) REM ### * 除外ファイルWimscript.iniを %makedir%\mount\Windows\に作成 set "Wimscript_ini=%makedir%\mount\Windows\Wimscript.ini" > "%Wimscript_ini%" echo [ExclusionList] >>"%Wimscript_ini%" echo ntfs.log >>"%Wimscript_ini%" echo hiberfil.sys >>"%Wimscript_ini%" echo pagefile.sys >>"%Wimscript_ini%" echo "System Volume Information" >>"%Wimscript_ini%" echo RECYCLER >>"%Wimscript_ini%" echo Windows\CSC >>"%Wimscript_ini%" echo: >>"%Wimscript_ini%" echo [CompressionExclusionList] >>"%Wimscript_ini%" echo *.mp3 >>"%Wimscript_ini%" echo *.zip >>"%Wimscript_ini%" echo *.cab >>"%Wimscript_ini%" echo \WINDOWS\inf\*.pnf if not exist "%Wimscript_ini%" GOTO ERROR echo ****** Wimscript.ini 作成 OK ****** REM ### * winpeshl.ini を %makedir%\mount\Windows\system32\に作成 set "Winpeshl_ini=%makedir%\mount\Windows\system32\winpeshl.ini" > "%Winpeshl_ini%" echo [LaunchApp] >>"%Winpeshl_ini%" echo AppPath=x:\sources\recovery\recenv.exe if not exist "%Winpeshl_ini%" GOTO ERROR echo ****** winpeshl.ini 作成 OK ****** REM ### * WinREConfig.xml 作成 REM mkdir %makedir%\mount\sources\recovery\Tools REM set "WinREConfig_xml=%makedir%\mount\sources\recovery\Tools\WinREConfig.xml" REM > "%WinREConfig_xml%" echo ^ REM >>"%WinREConfig_xml%" echo ^ REM >>"%WinREConfig_xml%" echo ^ REM if not exist "%WinREConfig_xml%" GOTO ERROR REM ### * bootfix.bin削除 del %makedir%\ISO\boot\bootfix.bin if ERRORLEVEL 1 GOTO ERROR echo ****** bootfix.bin 削除 OK ****** REM ### * レジストリ修正ファイル ShowAll.cmd を %makedir%\mount\Windows\system32 に作成 set ShowAll=%makedir%\mount\Windows\system32\ShowAll.cmd set "RegKey=HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" > "%ShowAll%" echo @echo off >>"%ShowAll%" echo reg add %RegKey% /v Hidden /t REG_DWORD /d 0x00000001 >>"%ShowAll%" echo reg add %RegKey% /v HideFileExt /t REG_DWORD /d 0x00000000 >>"%ShowAll%" echo reg add %RegKey% /v SuperHidden /t REG_DWORD /d 0x00000001 >>"%ShowAll%" echo reg add %RegKey% /v ShowSuperHidden /t REG_DWORD /d 0x00000001 >>"%ShowAll%" echo reg query %RegKey% if not exist "%ShowAll%" GOTO ERROR echo ****** ShowAll.cmd 作成 OK ****** REM ### * ドライバ追加 * echo: echo ============================================================== echo * ドライバ追加 * echo ============================================================== echo: REM set driver_01=D:\vmware\driver\pcnet\WinServer2003_SignedDriver\netamd.inf REM set driver_02= REM set driver_03= REM set driver_04=E:\driver\P5KPL_AM\Drivers\Lan\Vista\vista_32\L1E60x86.inf REM set driver_05=E:\driver\P5KPL_AM\Drivers\Lan\Vista\vista_64\L1E60x64.inf REM set driver_06=E:\driver\P5KPL_AM\Drivers\Lan\Vista\Win7_32\netL1e86.inf REM set driver_07=E:\driver\P5KPL_AM\Drivers\Lan\Vista\Win7_64\netL1e64.inf set | findstr /i driver_ if ERRORLEVEL 1 GOTO MAKE_WIM for /f "usebackq tokens=2 delims==" %%x in (`set driver_`) do ( if defined dism ( dism /image:%makedir%\mount /add-driver /driver:%%x ) else ( peimg /inf=%%x %makedir%\mount\windows ) if not ERRORLEVEL 1 ( echo: echo -------------------- echo * OK = %%x echo -------------------- echo: ) else ( echo: echo -------------------- echo !ERROR = %%x echo -------------------- echo: )) REM ### * winre.wim の変更を保存 * :MAKE_WIM echo: echo ============================================================== echo * winre.wim の変更を保存 * echo ============================================================== echo: imagex /unmount /commit %makedir%\mount if ERRORLEVEL 1 GOTO ERROR REM ### * winre.wim を sources\boot.wim へ上書きコピー * echo: echo ============================================================== echo * winre.wim を sources\boot.wim へ上書きコピー * echo ============================================================== echo: copy /y %makedir%\winre.wim %makedir%\iso\sources\boot.wim if ERRORLEVEL 1 GOTO ERROR REM ### * isoイメージ作成 * echo: echo ============================================================== echo * isoイメージ作成 echo ============================================================== echo: REM # ######################################################### # REM # OSCDIMG [options] sourceroot targetfile REM # ######################################################### # set "iso=%makedir%\WinRE%ARC%.iso" oscdimg -n -b%makedir%\etfsboot.com "%makedir%\ISO" "%iso%" if ERRORLEVEL 1 GOTO ERROR GOTO DONE REM ##################################### REM ### NO_AIK REM ##################################### :NO_AIK echo. echo. echo. echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo ! ! echo ! Windows AIK がインストールされていません! ! echo ! ! echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo. GOTO END REM ##################################### REM ### IA64 REM ##################################### :IA64 echo: echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo: echo !IA64 では確認してないのです。。 echo: echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo: GOTO END REM ##################################### REM ### UAC REM ##################################### :UAC echo: echo: echo: echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo: echo !「管理者として実行」してくださいマセ ! echo: echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo: GOTO END REM ##################################### REM ### ERROR REM ##################################### :ERROR echo: echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo !!! !!! echo !!! !エラー出ました...orz !!! echo !!! !!! echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo: GOTO END REM ##################################### REM ### DONE REM ##################################### :CANCEL echo. echo キャンセルしますた... GOTO END :DONE echo. echo ****************************************************************** echo ****************************************************************** echo * %iso% echo * 作成しました! echo ****************************************************************** echo ************ ************ echo ************ 正常に終了イタシマシタ ************ echo ************ ************ echo ************ オツカレサマー ************ echo ************ ************ echo ****************************************************************** echo ****************************************************************** echo. GOTO END :END echo: echo *** 何かキーを押すと閉じます *** pause >nul