堪称神器啊,备份还原软件里的扛把子,都推出来十多年居然不知道,白玩了十几年的系统。
自从Win10开始就没有趁手的还原软件,难怪这些还原软件都不更新直到现在我才明白原因
言归正传,回归正题,构思调试写了半天头发又少了几根,先把批处理代码贴上。
-----------------------我是分割线-------------------保存ANSI编码--------------------------
%1(start /min cmd.exe /c %0 :&exit)
@echo off
cd /d %~dp0
:: 检查文件
if not exist Windown11_10.vhdx goto end
if not exist Windown11_11.vhdx goto end
if not exist Windown11_1a.vhdx goto end
if not exist Windown11_1b.vhdx goto end
if not exist Windown11_back.vhdx goto end
:: 重置变量,防止报错。
for %%i in (q0 qa q1 qb v0 va d0 da) do set %%i=
:: 临时重命名来间接判断当前启动菜单
ren Windown11_10.vhdx Windown11_10.tem
ren Windown11_11.vhdx Windown11_11.tem
ren Windown11_1a.vhdx Windown11_1a.tem
ren Windown11_1b.vhdx Windown11_1b.tem
:: 根据当前启动菜单设置下次启动菜单
if exist Windown11_11.vhdx bcdedit /import D:\System\bcd1b
if exist Windown11_1b.vhdx bcdedit /import D:\System\bcd11
if exist Windown11_10.vhdx bcdedit /import D:\System\bcd10
if exist Windown11_1a.vhdx bcdedit /import D:\System\bcd1a
:: 重置还原模式的VHD文件
copy /y Windown11_back.vhdx Windown11_1b.vhdx
copy /y Windown11_back.vhdx Windown11_11.vhdx
:: 还原临时被重命名的文件名
ren Windown11_10.tem Windown11_10.vhdx
ren Windown11_1a.tem Windown11_1a.vhdx
:: 列举正常模式或出厂模式的VHD文件时间戳
for /r %%i in (*10.*) do set v0=%%~ti
set v0=%v0: =%
set v0=%v0::=%
set v0=%v0:/=%
for /r %%i in (*1a.*) do set va=%%~ti
set va=%va: =%
set va=%va::=%
set va=%va:/=%
:: 在任意模式下该VHD文件时间戳长的被还原
if %v0% gtr %va% copy /y Windown11_back.vhdx Windown11_1a.vhdx
if %va% gtr %v0% copy /y Windown11_back.vhdx Windown11_10.vhdx
:: 列举正常模式或出厂模式的VHD文件大小
for /r %%i in (*10.*) do set d0=%%~zi
for /r %%i in (*1a.*) do set da=%%~zi
:: 在任意模式下该VHD文件大小小的被还原
if %d0% gtr %da% copy /y Windown11_back.vhdx Windown11_1a.vhdx
if %da% gtr %d0% copy /y Windown11_back.vhdx Windown11_10.vhdx
:: 删除旧VHD文件
del /f /q *.tem
exit
:end
msg %username% /time:3 错误!文件丢失。
-----------------------我是分割线-------------------保存ANSI编码--------------------------
正常模式:电脑上所有的操作都会保存
还原模式:类似网吧的电脑,下次进入系统还是不会有任何改变。
出厂模式:这个很好理解就像GHOST还原系统一样,手机上恢复出厂设置一样
比如正常模式下系统用久有点卡,想还原之前的备份,这时就用这个模式
下次进入系统还是正常模式
批处理逻辑为---------- 获取启动菜单---------导入BCD文件----------重置或者保留VHD文件
编辑BCD文件也可以用命令代替,我选择用BOOTICE编辑的方法。
主要是让大家可以直观的学习下原理,方便大家一起探讨学习。
启动菜单和bcd文件和VHD文件三者是对应关联的 以下是我整理出的xls表格
前面两个步骤没什么难度的我重点说下 如何保留VHD文件
我的方法是通过VHD文件大小和时间来筛选
情况1
一般情况正常模式下的占用的VHD文件比另外一个大
假如我选择出厂模式时两个VHD文件大小就难说了
这时我们可以使用VHD文件的时间戳来判断
既然是出厂模式,那之前的VHD文件时间戳肯定比较长
情况2
般情况正常模式下的占用的VHD文件时间戳比另外一个长
假如我选择出厂模式,如果VHD文件是当天创建的可能时间戳相同
这时我们可以使用VHD文件的大小来判断
时间戳相同的情况不管正常模式还是出厂模式VHD文件只要挂载过肯定比另外一个大
VHD文件的时间戳和大小单独使用都有漏洞,结合起来就完美了。
我的结论是先筛选VHD文件的时间戳再筛选大小,这样不会漏掉了。
本人的操作系统为 Windows_11_23H2 固件为 UEFI 在实体机多次测试OK。
大家可以试下BIOS固件知道原理改下应该不难,
BIOS固件理论上比UEFI更容易搞定,有时间再写个BIOS固件的开机还原脚本。
参考资料 http://www.cppblog.com/iniwf/archive/2009/03/24/77788.html
如果回帖积极再写个桌面右键或者我的电脑右键选择引导菜单的脚本。
第一次发帖欢迎大家转载,有什么问题可以后面跟帖一起讨论研究。
最后就是附上工具在此保存,和网盘下载地址 密码就是作者ID
链接:https://pan.baidu.com/s/1D_bG6TPApgVIeiZhdsuCPw 提取码:1277
[url=]下载地址:附件[/url]