无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 13932|回复: 145

[原创] VHD秒还原开机脚本 两种还原模式 + 桌面右键菜单 持续更新

    [复制链接]
发表于 2024-6-23 16:19:36 | 显示全部楼层 |阅读模式
本帖最后由 baby1277 于 2024-11-20 23:15 编辑

很喜欢VHD系统特意写了这套开机还原脚本和大家分享,把批处理脚本的主代码贴上给大家参考下。

  1. @echo off
  2. title VHD还原
  3. cd /d %~dp0
  4. :: 检查脚本安装正确性
  5. set auto=baby1277
  6. for %%i in (Windows.*) do set nx=%%~xi
  7. if not exist Windows%nx% goto error
  8. if not exist description.ini goto error
  9. for /f %%i in (description.ini) do set description=%%i
  10. for %%a in (z h c) do for %%i in (0ba a10 01a ab0) do if not exist bcd\bcd%%i%%a goto error
  11. for %%i in (10 11 1a 1b back) do if not exist Windows_%%i%nx% goto error
  12. reg query "HKEY_CLASSES_ROOT\DesktopBackground\shell\vhdstart" >nul 2>nul
  13. if %errorlevel% neq 0 call 1添加开机启动.bat
  14. :: 查询 "Windows_back%nx%" VHD副本文件大小
  15. for %%i in (Windows_back%nx%) do set back=%%~zi
  16. set back=%back:~0,-4%
  17. :: 查询 "Windows 正常模式" 的VHD文件大小
  18. for %%i in (Windows_10%nx%) do set z0=%%~zi
  19. for %%i in (Windows_1a%nx%) do set za=%%~zi
  20. set z0=%z0:~0,-4%&set za=%za:~0,-4%
  21. :: 查询 "Windows 还原模式" 的VHD文件大小
  22. for %%i in (Windows_11%nx%) do set z1=%%~zi
  23. for %%i in (Windows_1b%nx%) do set zb=%%~zi
  24. set z1=%z1:~0,-4%&set zb=%zb:~0,-4%
  25. :: 临时重命名查询当前挂载的VHD文件
  26. for %%i in (10 11 1a 1b) do ren Windows_%%i%nx% Windows_%%i.tem
  27. : 还原VHD差分文件
  28. :bcd10
  29. if not exist Windows_10%nx% goto bcd1a
  30. if %z1% neq %back% copy /y Windows_back%nx% Windows_11%nx%
  31. if %zb% neq %back% copy /y Windows_back%nx% Windows_1b%nx%
  32. if %za% neq %back% copy /y Windows_back%nx% Windows_1a%nx%
  33. :bcd1a
  34. if not exist Windows_1a%nx% goto bcd11
  35. if %z1% neq %back% copy /y Windows_back%nx% Windows_11%nx%
  36. if %zb% neq %back% copy /y Windows_back%nx% Windows_1b%nx%
  37. if %z0% neq %back% copy /y Windows_back%nx% Windows_10%nx%
  38. :bcd11
  39. if not exist Windows_11%nx% goto bcd1b
  40. if %zb% neq %back% copy /y Windows_back%nx% Windows_1b%nx%
  41. :bcd1b
  42. if not exist Windows_1b%nx% goto vhdFiles
  43. if %z1% neq %back% copy /y Windows_back%nx% Windows_11%nx%
  44. :: 恢复临时重命名的VHD文件
  45. :vhdFiles
  46. for %%i in (Windows_1*.tem) do ren %%i %%~ni%nx% || del /f /q %%i
  47. :: 重新查询 "Windows 正常模式" 的VHD文件大小
  48. for %%i in (Windows_10%nx%) do set d0=%%~zi
  49. for %%i in (Windows_1a%nx%) do set da=%%~zi
  50. set d0=%d0:~0,-4%&set da=%da:~0,-4%
  51. :: 重新查询 "Windows 还原模式" 的VHD文件大小
  52. for %%i in (Windows_11%nx%) do set d1=%%~zi
  53. for %%i in (Windows_1b%nx%) do set db=%%~zi
  54. set d1=%d1:~0,-4%&set db=%db:~0,-4%
  55. :: 定义引导菜单
  56. if %d0% equ %back% set v1=a
  57. if %da% equ %back% set v1=0
  58. if %d0% equ %back% set v3=0
  59. if %da% equ %back% set v3=a
  60. if %db% equ %back% set v2=b
  61. if %d1% equ %back% set v2=1
  62. if %z0% neq %d0% set v4=z
  63. if %za% neq %da% set v4=z
  64. if %d1% neq %db% set v4=h
  65. :: 设置引导菜单
  66. if defined v4 bcdedit /import bcd\bcd%v1%%v2%%v3%%v4%
  67. :: 更新桌面右键菜单
  68. set reg=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell
  69. if %d1% neq %db% goto menu1
  70. reg add "%reg%\start.1" /ve /t REG_SZ /d "%description% 正常模式  (当前)" /f
  71. reg add "%reg%\start.2" /ve /t REG_SZ /d "%description% 还原模式" /f
  72. reg add "%reg%\start.3" /ve /t REG_SZ /d "一键还原 %description%" /f
  73. if exist login.txt call login.bat
  74. :menu1
  75. reg add "%reg%\start.1" /ve /t REG_SZ /d "%description% 正常模式" /f
  76. reg add "%reg%\start.2" /ve /t REG_SZ /d "%description% 还原模式  (当前)" /f
  77. reg add "%reg%\start.3" /ve /t REG_SZ /d "一键还原 %description%" /f
  78. if exist login.txt call login.bat
  79. :error
  80. start nircmd infobox "检测到VHD还原脚本安装错误 !" "tip"
  81. nircmd cmdwait 3000 clipboard clear
  82. taskkill /f /im nircmd.exe
  83. exit
复制代码
caidan.jpg

caidan71.jpg

系统配置.png

启动.png

右键菜单.png

caidan7.jpg

日志.jpg

桌面右键菜单算是别出心裁吧,电脑小白点两下鼠标就可以轻松还原系统,简直太方便了。
正常模式:保存数据 ,适合作为常用系统。
还原模式:不保存数据
适合用于运行不安全的软件和测试。
出厂模式:还原系统
,系统出现问题时一键还原系统。
  
vhd还原脚本的运行逻辑:1还原VHD文件
-----2导入BCD文件-----3更新桌面右键菜单
  
1
还原VHD文件
     通过临时重命名查询当前挂载的VHD文件,从而得知当前所使用的脚本模式。
     当处于正常模式时:还原未被挂载的其余3个VHD文件
     当处于还原模式时:还原模式交替挂载两个VHD文件,还原未被挂载的那个VHD文件。
     当处于出厂模式时:还原未被挂载的其余3个VHD文件
  
2:导入
BCD文件
     使用bcdboot和bcdedit创建固定路径菜单的bcd文件,最后用bcdedit /import 命令导入。
     还原脚本大致的原理是:BCD文件与默认引导菜单和VHD文件三者组合起来交替挂载使用
     以下是我整理出的xls表格,其中
10和1a对应正常模式和出厂模式,11和1b交替挂载为还原模式。
      
      1.jpg
      2.jpg
      3.jpg     

     手动创建bcd文件的方法 (已支持一键创建BCD文件,当备选方案和了解原理。)
     运行环境:Win8以上本地磁盘系统或者PE系统和VHD系统都可以
     以创建bcd01az文件为例  bcdboot添加顺序为 1a 11 10
     01:右键挂载Windows_1a.vhdx 为V盘  (假设是V盘)
     02:打开 "命令提示符.lnk" 执行:bcdboot V:\windows /l zh-ch
     03:打开 "命令提示符.lnk" 执行:bcdedit /set {default} description "Windows 出厂模式"
     04:打开资源管理器 右键弹出V盘
     05:右键挂载Windows_11.vhdx 为V盘  (假设是V盘)
     06:打开 "命令提示符.lnk" 执行:bcdboot V:\windows /l zh-ch
     07:打开 "命令提示符.lnk" 执行:bcdedit /set {default} description "Windows 还原模式"
     08:打开资源管理器 右键弹出V盘
     09:右键挂载Windows_10.vhdx 为V盘  (假设是V盘)
     10:打开 "命令提示符.lnk" 执行:bcdboot V:\windows /l zh-ch
     11:打开 "命令提示符.lnk" 执行:bcdedit /set {default} description "Windows 正常模式"
     12:打开资源管理器 右键弹出V盘
     13:打开 "命令提示符.lnk" 执行:bcdedit /export "%cd%\bcd\bcd01az" 创建bcd01az文件成功。
     14:打开 "命令提示符.lnk" 执行:msconfig 选择引导选项卡,删除新建的3个的菜单。
      举一反三,重复1-14步骤按照xls表格的内容 分别创建其他的BCD文件

3:更新桌面右键菜单
      对比还原模式的VHD文件大小,相同设置为正常模式,不同则设置为还原模式。
      进入系统后没有出厂模式,如菜单显示为出厂模式则会按上述规则重新设置。


VHD还原脚本手动安装方法(已支持一键安装,当备选方案和了解原理。
      安装运行环境:Win8以上本地磁盘系统或者PE系统和VHD系统都可以
      1:将父VHD系统和脚本放在一起放重命名为Windows.vhdx
      2:右键装载Windows.vhdx (父VHD) 为V盘 (假设是V盘)
      3:打开 "命令提示符.lnk" 执行:bcdboot V:\windows /l zh-ch
      4:重启系统自动引导登录Windows.vhdx (父VHD) 运行“1添加开机启动.bat”
      5:重启系统手动选择进入PE系统或者本地磁盘系统 运行“2创建vhd差分文件.bat”
      6:运行“3创建bcd菜单.bat”
      7:重启系统完成安装,安装成功后首次进入 “Windows  正常模式”


VHD还原脚本的安装逻辑 (手动安装)      
      1:重命名目标VHD文件 (步骤1)
      2:往目标VHD系统的注册表添加开机启动项 (步骤2-4)
      3:差分目标VHD (步骤5)
      4:引导登录差分VHD (步骤6)


VHD还原脚本安装失败或者脚本无效可能原因
      01:目标VHD文件被占用,可能安装前被挂载过。
      02:目标VHD文件相关连的其他VHD文件被挂载或占用。
      03:目标VHD文件被设置为只读属性
      04:目标VHD文件自身无法被命令行挂载,但右键可以。(diskpart版本造成的)
      05:批处理没有以管理员权限运行   (提示无法。。。。)
      06:批处理所在的文件夹权限受限  (bat文件右键删除菜单有个小盾牌图标)
      07:文件夹路径中包含汉字或者空格符。
      08:安全防护软件的拦截
      09:安装环境有问题,例如:系统版本太低,系统组件缺失。
      10:硬盘分区错误,例如:ESP分区太小,磁盘格式错误。
      11:默认引导程序不是bootmgr

      12:脚本存在错误,需要作者修复。

使用该脚本不需要修改主板BIOS,支持安全启动,不影响系统更新。
同时支持UEFI和BIOS固件,理论上Win7-Win11的新旧电脑都可以使用。
分别在操作系统为 Windows_10_2019_ltsc 固件为 BIOS 的实体机测试OK
分别在操作系统为 Windows_11_23H2 固件为 UEFI 的实体机测试OK


附件在沙发方便更新,如有问题回帖!





点评

默默等待BIOS系统  发表于 2024-6-29 11:38
辛苦了  发表于 2024-6-23 18:09

评分

参与人数 10无忧币 +52 收起 理由
freesoft00 + 5
qq27722 + 5 赞一个!
lemonle79 + 5
879792799 + 5 绝对好创意!
smartcowboy + 5 期待分享其他更好的作品
whyme22 + 5
Myptour + 5 赞一个!
新空气 + 5
yyz2191958 + 2 赞一个!
20090101 + 10 很给力!

查看全部评分

 楼主| 发表于 2024-6-23 16:20:20 | 显示全部楼层
本帖最后由 baby1277 于 2024-11-20 22:24 编辑

2024.11.1 支持显示为实际占用大小的VHD文件,完美的使用Wimboot+VHD 。

此版本直接设置引导菜单的VHD文件路径(适合需要修改BCD菜单的网友使用)
VHD秒还原2024.11.20.zip (50.86 KB, 下载次数: 319)

点评

急需你的操作视频  发表于 2024-8-28 11:24

评分

参与人数 3无忧币 +20 收起 理由
879792799 + 5 批处理还原大法集大成者!666
qq27722 + 5 赞一个!
20090101 + 10 很给力!

查看全部评分

回复

使用道具 举报

发表于 2024-6-23 16:35:15 | 显示全部楼层
谢谢共享
回复

使用道具 举报

发表于 2024-6-23 16:36:27 | 显示全部楼层
密码是?

点评

我的ID 帖子中有说明  详情 回复 发表于 2024-6-23 16:40
回复

使用道具 举报

 楼主| 发表于 2024-6-23 16:40:33 | 显示全部楼层

我的ID 帖子中有说明
回复

使用道具 举报

发表于 2024-6-23 16:45:14 | 显示全部楼层

谢谢分享!!!
回复

使用道具 举报

发表于 2024-6-23 16:47:10 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2024-6-23 17:28:18 | 显示全部楼层
感谢分享,我比较菜,不懂VHD,有详细使用说明吗?谢谢

点评

详细的资料,只能帮助到这里了。 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=414366  详情 回复 发表于 2024-6-23 17:37
回复

使用道具 举报

 楼主| 发表于 2024-6-23 17:37:18 | 显示全部楼层
2013ertert 发表于 2024-6-23 17:28
感谢分享,我比较菜,不懂VHD,有详细使用说明吗?谢谢

详细的资料,只能帮助到这里了。
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=414366
回复

使用道具 举报

发表于 2024-6-23 17:37:51 | 显示全部楼层
vhd系统一直不能休眠啊 ,而我又需要休眠,
所以我不大用vhd系统

点评

用winntsetup创建/附加VHD并安装系统进去,主BCD里有Windows Resume Application. 你试试这样操作,看看这样整的系统能不能休眠?  详情 回复 发表于 2024-6-24 10:59
回复

使用道具 举报

 楼主| 发表于 2024-6-23 17:45:05 | 显示全部楼层
从来没用过休眠功能,刚刚我试用了好像支持,点击睡眠主机风扇和屏幕也关了。
不知道是不是休眠,可以win11支持了也难说。 新建 BMP 图片文件.jpg


点评

vhd支持睡眠、不支持休眠。 我是台式机,因为有没干完的活(打开的软件或其他,也怕关机把没干完的活忘了),所以不能关机,但又怕停电,只能休眠。  详情 回复 发表于 2024-6-24 11:17
回复

使用道具 举报

发表于 2024-6-23 17:56:07 | 显示全部楼层
主板支持睡眠,就可以的。我一直在用。
回复

使用道具 举报

发表于 2024-6-23 18:09:06 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2024-6-23 20:13:20 | 显示全部楼层
VHD从7时代就开始用了,挺好的,特别是用来测试系统
你这个想法,貌似之前有人发过类似的,更早以前BIOS模式还有个GUI小软件形式添加的,不过,我个人更喜欢手工确认更换
回复

使用道具 举报

发表于 2024-6-23 22:22:09 | 显示全部楼层
谢谢分享。
回复

使用道具 举报

发表于 2024-6-23 22:42:03 | 显示全部楼层

谢谢分享
回复

使用道具 举报

发表于 2024-6-24 08:35:01 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2024-6-24 09:48:46 | 显示全部楼层
回复

使用道具 举报

发表于 2024-6-24 10:39:08 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2024-6-24 10:59:54 | 显示全部楼层
likeyouli 发表于 2024-6-23 17:37
vhd系统一直不能休眠啊 ,而我又需要休眠,
所以我不大用vhd系统

用winntsetup创建/附加VHD并安装系统进去,主BCD里有Windows Resume Application. 你试试这样操作,看看这样整的系统能不能休眠?

点评

这句没看懂, 我感觉应该也不能休眠,不能休眠的原因估计是虚拟分区的原因,也就是说只有正常硬盘分区才支持休眠。 这只是我猜测。  详情 回复 发表于 2024-6-24 11:09
回复

使用道具 举报

发表于 2024-6-24 11:09:29 | 显示全部楼层
音乐与电脑 发表于 2024-6-24 10:59
用winntsetup创建/附加VHD并安装系统进去,主BCD里有Windows Resume Application. 你试试这样操作,看看 ...
主BCD里有Windows Resume Application
这句没看懂,
  我感觉应该也不能休眠,不能休眠的原因估计是虚拟分区的原因,也就是说只有正常硬盘分区才支持休眠。 这只是我猜测。

点评

要不试试  详情 回复 发表于 2024-6-24 11:38
回复

使用道具 举报

发表于 2024-6-24 11:17:21 | 显示全部楼层
baby1277 发表于 2024-6-23 17:45
从来没用过休眠功能,刚刚我试用了好像支持,点击睡眠主机风扇和屏幕也关了。
不知道是不是休眠,可以win1 ...

vhd支持睡眠、不支持休眠。
  我是台式机,因为有没干完的活(打开的软件或其他,也怕关机把没干完的活忘了),所以不能关机,但又怕停电,只能休眠。
回复

使用道具 举报

发表于 2024-6-24 11:38:02 | 显示全部楼层
likeyouli 发表于 2024-6-24 11:09
这句没看懂,
  我感觉应该也不能休眠,不能休眠的原因估计是虚拟分区的原因,也就是说只有正常硬盘分 ...

要不试试
回复

使用道具 举报

发表于 2024-6-24 13:03:08 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

发表于 2024-6-24 15:02:42 | 显示全部楼层
感谢辛苦提供分享!
回复

使用道具 举报

发表于 2024-6-25 08:45:02 | 显示全部楼层

谢谢楼主
回复

使用道具 举报

发表于 2024-6-25 12:04:18 | 显示全部楼层
支持原创。虽然vhd一键还原早就有了,但是爱折腾永不过时。
回复

使用道具 举报

发表于 2024-6-25 14:11:48 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2024-6-29 12:19:02 | 显示全部楼层
这个要支持
回复

使用道具 举报

发表于 2024-7-10 19:13:01 | 显示全部楼层
现在用的仅仅是2个vhd系统,正常和恢复,恢复也仅仅是copy&restart 写在计划任务里,这回有新玩法了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-22 13:43

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表