Created
March 14, 2023 05:46
-
-
Save cuteribs-1/b3dabb65153c1b4665f4bb1feba5f08d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@echo off | |
set DPS=%~dp0dps | |
:start | |
color 07 | |
cls | |
echo -------------------------------------------------------------------------------- | |
echo 排骨的 Win10 系统迁移脚本 | |
echo. | |
echo 1. 系统备份 | |
echo 2. 分区创建 | |
echo 3. 系统恢复 | |
echo 4. 退出脚本 | |
echo -------------------------------------------------------------------------------- | |
set /p OPTION= | |
if %OPTION%==1 goto backup | |
if %OPTION%==2 goto partition | |
if %OPTION%==3 goto restore | |
goto exit | |
:backup | |
cls | |
echo -------------------------------------------------------------------------------- | |
echo ** 系统备份 ** | |
echo. | |
echo 1. 开始备份 | |
echo 2. 返回上层 | |
echo -------------------------------------------------------------------------------- | |
set /p OPTION= | |
if %OPTION%==2 goto start | |
echo list vol > %DPS% | |
diskpart /s %DPS% | |
echo 请输入需要需要备份的系统分区盘符: | |
set /p SYSLETTER= | |
echo 请输入保存备份镜像的完整路径: (如: d:\backup.wim) | |
set /p PATH= | |
echo 请选择备份镜像压缩率: (1 - 不压缩, 2 - 快速压缩, 3 - 最大压缩) | |
set /p COMPRESS= | |
if %COMPRESS%==1 ( | |
set COMPRESS=none | |
) else if %COMPRESS%==2 ( | |
set COMPRESS=fast | |
) else if %COMPRESS%==3 ( | |
set COMPRESS=max | |
) | |
dism /capture-image /name:WinBackup /capturedir:%SYSLETTER%:\ /configfile:%~dp0\wimscript.ini /imagefile:%PATH% /compress:%COMPRESS% | |
if errorlevel 1 ( | |
echo 备份出错, 建议重启后再试 | |
) else ( | |
echo 备份完成 | |
pause | |
goto start | |
) | |
:backupend | |
pause | |
goto backup | |
:partition | |
cls | |
echo -------------------------------------------------------------------------------- | |
echo ** 分区创建 ** | |
echo. | |
echo 1. 开始分区 | |
echo 2. 返回上层 | |
echo -------------------------------------------------------------------------------- | |
set /p OPTION= | |
if %OPTION%==2 goto start | |
echo list disk > %DPS% | |
diskpart /s %DPS% | |
echo 请选择需要执行分区的磁盘编号: (所选磁盘将被清空, 请慎重选择) | |
set /p DISKNO= | |
echo 请指定 EFI 分区大小: (单位 MB, 建议值 300) | |
set /p EFISIZE= | |
echo 请指定 EFI 分区盘符: | |
set /p EFILETTER= | |
echo 请输入系统分区大小: (单位 MB, 建议值 61440 以上) | |
set /p SYSSIZE= | |
echo 请输入系统分区盘符: | |
set /p SYSLETTER= | |
echo 开始执行分区吗? (y/n) | |
set /p YN= | |
if %YN%==y ( | |
echo select disk %DISKNO% > %DPS% | |
echo clean >> %DPS% | |
echo convert gpt >> %DPS% | |
echo create part efi size=%EFISIZE% >> %DPS% | |
echo format fs=fat32 quick label=EFI >> %DPS% | |
echo assign letter=%EFILETTER% >> %DPS% | |
echo create part primary size=%SYSSIZE% >> %DPS% | |
echo format fs=ntfs quick label=System >> %DPS% | |
echo assign letter=%SYSLETTER% >> %DPS% | |
echo list vol >> %DPS% | |
) | |
diskpart /s %DPS% | |
if errorlevel 1 ( | |
echo 分区出错 | |
) else ( | |
echo 分区完成 | |
pause | |
goto start | |
) | |
:partitionend | |
pause | |
goto partition | |
:restore | |
cls | |
echo -------------------------------------------------------------------------------- | |
echo ** 系统恢复 ** | |
echo. | |
echo 1. 开始恢复 | |
echo 2. 返回上层 | |
echo -------------------------------------------------------------------------------- | |
set /p OPTION= | |
if %OPTION%==2 goto start | |
echo list vol > %DPS% | |
diskpart /s %DPS% | findstr NTFS | |
echo 请指定系统恢复目标分区盘符: | |
set /p SYSLETTER= | |
diskpart /s %DPS% | findstr FAT32 | |
echo 请指定 EFI 目标分区盘符: | |
set /p EFILETTER= | |
echo 请输入系统备份镜像的完整路径 (如: d:\backup.wim): | |
set /p WIMPATH= | |
dism /apply-image /index:1 /imagefile:%WIMPATH% /applydir:%SYSLETTER%:\ | |
if errorlevel 1 ( | |
echo 系统恢复失败 | |
goto restoreend | |
) | |
echo 系统分区恢复完成, 开始创建 EFI 启动项... | |
%SYSLETTER%:\windows\system32\bcdboot.exe %SYSLETTER%:\windows /s %EFILETTER%: /f UEFI | |
if errorlevel 1 ( | |
echo EFI 启动项创建失败 | |
) else ( | |
echo EFI 启动项创建完成 | |
pause | |
goto start | |
) | |
:restoreend | |
pause | |
goto restore | |
:exit | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment