Skip to content

Instantly share code, notes, and snippets.

@cuteribs-1
Created March 14, 2023 05:46
Show Gist options
  • Save cuteribs-1/b3dabb65153c1b4665f4bb1feba5f08d to your computer and use it in GitHub Desktop.
Save cuteribs-1/b3dabb65153c1b4665f4bb1feba5f08d to your computer and use it in GitHub Desktop.
@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