|
下载学习 感觉太复杂
附上本人一直在用的批处理:
::一般使用:建议手动还原 需要还原时 手动运行一次脚本 重启即可
::设置启动秒还原:需要在注册表中 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
::右键新建字符串值 restore 样例: 字符串数值数据里就是填写 例:(D:\Win10Pro\Restore_Win10Pro.cmd)
@echo off&pushd %~dp0
setlocal enabledelayedexpansion
::提取批处理中的guid
for /f %%i in ('dir /b del*.cmd') do set id=%%i
for /f "tokens=3 delims= " %%a in (%id%) do set guid=%%a
::获取当前目录唯一VHD名称
for /r %%d in (*.vhdx) do (set vhdpath=%%d)
::获取当前磁盘分区及路径
for /f,"delims=",%%a in ("!vhdpath!") do set vol=[%%~da]& set pn=%%~pa
::设置基本差分
set Dif=BaseDif.vhdx
::设置两个复制的基本差分
set Sub_a=CopyDif_A.vhdx
set Sub_b=CopyDif_B.vhdx
:Start
::创建基本差分
if not exist %~dp0!Dif! (
echo create vdisk file=%~dp0!Dif! parent="!vhdpath!"|diskpart >nul
)
:bcd_restore
::以下句成功是否为依据:成功Sub_a 失败Sub_b
Copy /y %~dp0!Dif! %~dp0!Sub_a! >nul 2>nul
if errorlevel 1 (
Copy /y %~dp0!Dif! %~dp0!Sub_b! >nul 2>nul
bcdedit /set !guid! osdevice vhd=!vol!!pn!!sub_b!
bcdedit /set !guid! device vhd=!vol!!pn!!sub_b!
) else (
bcdedit /set !guid! osdevice vhd=!vol!!pn!!sub_a!
bcdedit /set !guid! device vhd=!vol!!pn!!sub_a!
)
:reg
::查看BCD配置变化
for /f "tokens=1*" %%c in ('bcdedit /enum !guid!') do (
if /i "%%c"=="device" (echo --BCD changed to %%d)
)
pause>nul
exit
|
|