@echo off
chcp 936 >nul 2>&1
title Sysprep 工具
setlocal enabledelayedexpansion

:: 管理员权限
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo 请以管理员身份运行
    pause
    exit /b
)

cls
echo ========================================
echo        Sysprep 通用化工具
echo ========================================
echo.
echo 本工具将执行 Sysprep 通用化
echo 计算机名随机生成，完成后自动重启
echo 建议把重要文件拷贝到D盘
echo 驱动和软件正常来说会保留
echo 系统需要重新激活
echo.
set /p confirm="确认继续？(输入YES): "
if /i not "%confirm%"=="YES" exit /b

:: 生成计算机名
for /f "tokens=2 delims==" %%a in ('wmic os get localdatetime /value') do set "dt=%%a"
set "datepart=%dt:~2,6%"
set "hour=%dt:~8,2%"
set "min=%dt:~10,2%"
set "letters=ABCDEFGHIJKLMNOPQRSTUVWXYZ"
set /a r1=%random% %% 26
set /a r2=%random% %% 26
set "rand1=!letters:~%r1%,1!"
set "rand2=!letters:~%r2%,1!"
set "COMPUTER_NAME=PC-%datepart%%hour%%min%!rand1!!rand2!"

:: 生成无人值守文件
(
echo ^<?xml version="1.0" encoding="utf-8"?^>
echo ^<unattend xmlns="urn:schemas-microsoft-com:unattend"^>
echo     ^<settings pass="windowsPE"^>
echo         ^<component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"^>
echo             ^<InputLocale^>0804:00000804^</InputLocale^>
echo             ^<SystemLocale^>zh-CN^</SystemLocale^>
echo             ^<UILanguage^>zh-CN^</UILanguage^>
echo             ^<UILanguageFallback^>zh-CN^</UILanguageFallback^>
echo             ^<UserLocale^>zh-CN^</UserLocale^>
echo             ^<SetupUILanguage^>
echo                 ^<UILanguage^>zh-CN^</UILanguage^>
echo             ^</SetupUILanguage^>
echo         ^</component^>
echo         ^<component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"^>
echo             ^<UserData^>
echo                 ^<AcceptEula^>true^</AcceptEula^>
echo             ^</UserData^>
echo         ^</component^>
echo     ^</settings^>
echo     ^<settings pass="specialize"^>
echo         ^<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"^>
echo             ^<RunSynchronous^>
echo                 ^<RunSynchronousCommand^>
echo                     ^<Order^>1^</Order^>
echo                     ^<Path^>net user Administrator /active:Yes^</Path^>
echo                     ^<WillReboot^>Never^</WillReboot^>
echo                 ^</RunSynchronousCommand^>
echo             ^</RunSynchronous^>
echo         ^</component^>
echo         ^<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"^>
echo             ^<ComputerName^>%COMPUTER_NAME%^</ComputerName^>
echo         ^</component^>
echo         ^<component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"^>
echo             ^<Identification^>
echo                 ^<JoinWorkgroup^>WORKGROUP^</JoinWorkgroup^>
echo             ^</Identification^>
echo         ^</component^>
echo     ^</settings^>
echo     ^<settings pass="oobeSystem"^>
echo         ^<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"^>
echo             ^<Reseal^>
echo                 ^<Mode^>OOBE^</Mode^>
echo             ^</Reseal^>
echo         ^</component^>
echo         ^<component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"^>
echo             ^<InputLocale^>0804:00000804^</InputLocale^>
echo             ^<SystemLocale^>zh-CN^</SystemLocale^>
echo             ^<UILanguage^>zh-CN^</UILanguage^>
echo             ^<UILanguageFallback^>zh-CN^</UILanguageFallback^>
echo             ^<UserLocale^>zh-CN^</UserLocale^>
echo         ^</component^>
echo         ^<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"^>
echo             ^<AutoLogon^>
echo                 ^<Enabled^>true^</Enabled^>
echo                 ^<LogonCount^>9999999^</LogonCount^>
echo                 ^<Username^>Administrator^</Username^>
echo                 ^<Password^>
echo                     ^<PlainText^>true^</PlainText^>
echo                     ^<Value^>^</Value^>
echo                 ^</Password^>
echo             ^</AutoLogon^>
echo             ^<OOBE^>
echo                 ^<HideEULAPage^>true^</HideEULAPage^>
echo                 ^<HideLocalAccountScreen^>true^</HideLocalAccountScreen^>
echo                 ^<HideOnlineAccountScreens^>true^</HideOnlineAccountScreens^>
echo                 ^<HideWirelessSetupInOOBE^>true^</HideWirelessSetupInOOBE^>
echo                 ^<NetworkLocation^>Home^</NetworkLocation^>
echo                 ^<ProtectYourPC^>3^</ProtectYourPC^>
echo                 ^<SkipMachineOOBE^>true^</SkipMachineOOBE^>
echo                 ^<SkipUserOOBE^>true^</SkipUserOOBE^>
echo             ^</OOBE^>
echo             ^<UserAccounts^>
echo                 ^<AdministratorPassword^>
echo                     ^<PlainText^>true^</PlainText^>
echo                     ^<Value^>^</Value^>
echo                 ^</AdministratorPassword^>
echo                 ^<LocalAccounts^>
echo                     ^<LocalAccount^>
echo                         ^<Group^>Administrators^</Group^>
echo                         ^<Name^>Administrator^</Name^>
echo                         ^<Password^>
echo                             ^<PlainText^>true^</PlainText^>
echo                             ^<Value^>^</Value^>
echo                         ^</Password^>
echo                     ^</LocalAccount^>
echo                 ^</LocalAccounts^>
echo             ^</UserAccounts^>
echo         ^</component^>
echo     ^</settings^>
echo ^</unattend^>
) > "%~dp0unattend.xml"

copy /y "%~dp0unattend.xml" "C:\Windows\System32\Sysprep\unattend.xml" >nul

echo.
echo 系统即将重启...

C:\Windows\System32\Sysprep\sysprep.exe /oobe /generalize /reboot /unattend:"C:\Windows\System32\Sysprep\unattend.xml"

pause