Finalmente, eu fiz isso.
Como o primeiro passo é especializado, eu deixo alterar as letras de unidade no registro pelo comando REG . Mas remover uma letra de unidade pelo registro é difícil de codificar, e uso de DISKPART requer uma reinicialização, então eu deixo acontecer no modo oobe.
Aqui está o que eu código: (Se você tiver alguma melhoria, por favor me avise:)
@echo OFF
setlocal ENABLEEXTENSIONS
if "%1"=="specialize" goto specialize
if "%1"=="oobe" (goto oobe) else (goto end)
:specialize
set KEY_NAME="HKLM\SYSTEM\MountedDevices"
REM Delete Drive D:
set VALUE_NAME=\DosDevices\D:
reg delete %KEY_NAME% /v %VALUE_NAME% /f
REM Get vaules of Drive E:
set VALUE_NAME=\DosDevices\E:
FOR /F "usebackq skip=2 tokens=1-3" %%A IN ('REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul') DO (
set ValueName=%%A
set ValueType=%%B
set ValueValue=%%C
)
if not defined ValueName goto end
REM Create Drive D with value of Drive E
set VALUE_NAME=\DosDevices\D:
reg add %KEY_NAME% /v %VALUE_NAME% /t %ValueType% /d %ValueValue% /f
REM Delete Drive E:
set VALUE_NAME=\DosDevices\E:
reg delete %KEY_NAME% /v %VALUE_NAME% /f
REM Set Page File
set KEY_NAME="HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management"
set VALUE_NAME=PagingFiles
set ValueType=REG_MULTI_SZ
set ValueValue="D:\pagefile.sys 0 0"
reg add %KEY_NAME% /v %VALUE_NAME% /t %ValueType% /d %ValueValue% /f
REM END
goto end
:oobe
REM Delete Drive E:
(echo select volume e & echo remove letter=e) | diskpart
:end
Seqüênciadetarefasdeteste
Observe que a imagem pode ser enviada para qualquer unidade desejada.