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