无忧启动论坛

标题: 求一个增加Wim文件到BCD的批处理 [打印本页]

作者: smellsun    时间: 2020-5-16 23:22
标题: 求一个增加Wim文件到BCD的批处理
本帖最后由 smellsun 于 2020-5-16 23:27 编辑

传统模式和uefi  都要   不需要自动复制Wim和SDI , 这个我们手动复制,固定文件名  boot.wim  boot.sdi  固定位置 引导分区 boot目录 注意不是系统所在分区

这个说一下本人的具体使用环境, 电脑公司装机需求。  
分区特殊    MBR    2个主分区    boot.wim 在首分区 通常这个分区是隐藏的
UEFI  boot.wim 在首分区 通常这个分区是隐藏的
作者: liu_zhenfeng    时间: 2020-5-16 23:22
  1. @echo off
  2. ::
  3. set wim=testpe
  4. set sdi=boot
  5. set title=%wim%
  6. set partition=z:
  7. ::
  8. mountvol.exe %partition% /s
  9. ::
  10. if exist "%partition%\boot\%wim%\id_1" (set/p id_1=<"%partition%\boot\%wim%\id_1" )
  11. if exist "%partition%\boot\%wim%\id_2" (set/p id_2=<"%partition%\boot\%wim%\id_2" )
  12. bcdedit /delete %id_1% /f >nul 2>nul
  13. bcdedit /delete %id_2% /f >nul 2>nul
  14. ::
  15. set id1={%time:~6,2%%time:~9,2%ffff-8d96-11de-8e71-fffffffffffa}
  16. set id2={%time:~6,2%%time:~9,2%ffff-8d96-11de-8e71-fffffffffffb}
  17. bcdedit /create %id2% /d "%title%" /device
  18. bcdedit /set %id2% ramdisksdidevice partition=%partition%
  19. bcdedit /set %id2% ramdisksdipath "\boot\%wim%\%sdi%.sdi"
  20. ::
  21. bcdedit /create %id1% /d "%title%" /application osloader
  22. bcdedit /set %id1% device ramdisk="[%partition%]\boot\%wim%\%wim%.wim",%id2%
  23. bcdedit /set %id1% osdevice ramdisk="[%partition%]\boot\%wim%\%wim%.wim",%id2%
  24. bcdedit /set %id1% path \windows\system32\boot\winload.efi
  25. bcdedit /set %id1% description "%title%"
  26. bcdedit /set %id1% locale zh-CN
  27. bcdedit /set %id1% inherit {bootloadersettings}
  28. bcdedit /set %id1% systemroot \windows
  29. bcdedit /set %id1% detecthal Yes
  30. bcdedit /set %id1% winpe Yes
  31. bcdedit /set %id1% ems no
  32. bcdedit /displayorder %id1% /addlast
  33. ::
  34. mountvol.exe %partition% /d
  35. ::
  36. timeout /t 5
复制代码
EFI_addwim_tmp2020517.txt (1.25 KB, 下载次数: 16)



作者: smellsun    时间: 2020-5-16 23:25



作者: smellsun    时间: 2020-5-16 23:27
坐等大佬出现
作者: liuzhaoyzz    时间: 2020-5-17 09:45
liu_zhenfeng 发表于 2020-5-17 01:23

1、mountvol.exe %partition% /s只适用于单硬盘有一个EFI分区的情况,对于多硬盘不能胜任,比如一个SSD硬盘+若干个大容量的GPT机械硬盘就难以胜任。
2、另外对于楼主图1的场景,有个1.25GB的活动MBR分区,是隐藏的,mountvol.exe %partition% /s也是不能自动挂载这个隐藏分区的。
3、楼主要求的适用于BIOS/UEFI启动的场景,上面的代码对于winload.exe/winload.efi不能自适应。

楼主可用过我写的PE安装器?
作者: liu_zhenfeng    时间: 2020-5-17 11:17
liuzhaoyzz 发表于 2020-5-17 09:45
1、mountvol.exe %partition% /s只适用于单硬盘有一个EFI分区的情况,对于多硬盘不能胜任,比如一个SSD硬 ...

自适应不仅仅是winload.exe/winload.efi的不同,隐藏分区挂载也大不一样,先来个单纯EFI的题主试试看。
作者: liu_zhenfeng    时间: 2020-5-17 15:35
set wim=testpe         wim文件名
set sdi=boot             boot文件名
set title=WindowsPE  启动项名称
set partition=z:         挂载到哪个盘
作者: liuzhaoyzz    时间: 2020-5-17 19:05
liu_zhenfeng 发表于 2020-5-17 15:35
set wim=testpe         wim文件名
set sdi=boot             boot文件名
set title=WindowsPE  启动项名 ...

        批处理可以做到遍历指定目录的任意一个wim文件并加入启动项,为什么要固定死名字呢?换个PE怎么办?
作者: qingyi78    时间: 2020-5-17 19:22
liu_zhenfeng 发表于 2020-5-17 01:23

http://wuyou.net/forum.php?mod=viewthread&tid=416395
现在再用的就是大神的这个帖子的批处理。看了你新的批处理感觉好像更好,不过仍有可以完善的地方。
作者: liu_zhenfeng    时间: 2020-5-17 22:33
liuzhaoyzz 发表于 2020-5-17 19:05
批处理可以做到遍历指定目录的任意一个wim文件并加入启动项,为什么要固定死名字呢?换个PE怎么 ...

因为题主说了是“ 固定文件名  boot.wim  boot.sdi  固定位置 ”了
作者: liu_zhenfeng    时间: 2020-5-17 22:42
qingyi78 发表于 2020-5-17 19:22
http://wuyou.net/forum.php?mod=viewthread&tid=416395
现在再用的就是大神的这个帖子的批处理。看了你 ...

实际来源于http://bbs.wuyou.net/forum.php?m ... p;page=2#pid3752228这个贴里的大神们的代码。我只是发现套成压缩包更能通用,我还差的远着呢....
作者: liuzhaoyzz    时间: 2020-5-18 06:33
liu_zhenfeng 发表于 2020-5-17 22:33
因为题主说了是“ 固定文件名  boot.wim  boot.sdi  固定位置 ”了

楼主的思路就不对,不能惯着他!
作者: qingyi78    时间: 2020-5-19 14:45
liu_zhenfeng 发表于 2020-5-17 22:42
实际来源于http://bbs.wuyou.net/forum.php?mod=viewthread&tid=408477&page=2#pid3752228这个贴里的大神 ...

其实主要是研究的精神和发现问题解决问题的能力,,从07年开始和不点一起探讨G4D的兼容问题开始,就慢慢学习无忧老大们的探索精神以及自我纠错能力。
作者: qingyi78    时间: 2020-5-19 14:51
传统模式和uefi  都要   不需要自动复制Wim和SDI , 这个我们手动复制,固定文件名  boot.wim  boot.sdi  固定位置 引导分区 boot目录 注意不是系统所在分区

这个说一下本人的具体使用环境, 电脑公司装机需求。  
分区特殊    MBR    2个主分区    boot.wim 在首分区 通常这个分区是隐藏的
UEFI  boot.wim 在首分区 通常这个分区是隐藏的

突然发现楼主的分区其实没那么复杂,也就是说是单一ESP分区引导UEFI兼负责LEGACY引导也就是说所有的启动文件都在这个分区,甚至连BOOT.WIM和BOOT.SDI也是固定的。只需要mountvol把ESP分区固定盘符为Z即可写出相当简单不用变量的批处理。我不会写,但相信很多批处理高手可以写出特别完美的带判断的批处理。
作者: qingyi78    时间: 2020-5-19 15:01
本帖最后由 qingyi78 于 2020-5-22 00:59 编辑

修改了一下LIU_ZHENFENG大神的批处理,固定了路径。可能有错。但对于丹ESP分区做这个批处理应该不难

已删除自己的批处理,请关注17楼的大神!

作者: liuzhaoyzz    时间: 2020-5-19 18:50
        如果一个批处理写出来,只能用于这一台或者同类型的电脑,写了干啥呢?不如直接用bootice搞下算了,还是GUI的。
作者: hilsonma    时间: 2020-5-21 05:23
本帖最后由 hilsonma 于 2020-5-21 05:44 编辑
  1. @echo off
  2. set sdi=%~p0boot.sdi
  3. set sdi_drv=%~d0
  4. set wim=%~p0boot.wim
  5. set des=boot.wim
  6. set wim_drv=%sdi_drv%
  7. if not %1a==a set wim=%~pnx1&&set des=%~nx1&&set wim_drv=%~d1
  8. for /f "tokens=2 delims={}" %%a in ('bcdedit /create /application osloader') do set Guid={%%a}
  9. bcdedit /set %Guid% description %des%
  10. bcdedit /set %Guid% device ramdisk=[%wim_drv%]%wim%,{ramdiskoptions}
  11. bcdedit /set %Guid% osdevice ramdisk=[%wim_drv%]%wim%,{ramdiskoptions}
  12. bcdedit /set %Guid% systemroot \Windows
  13. bcdedit /set %Guid% detecthal 1
  14. bcdedit /set %Guid% winpe 1
  15. bcdedit /displayorder %Guid% /addlast
  16. bcdedit /timeout 5
  17. bcdedit /set {bootmgr} nointegritychecks 1
  18. bcdedit /create {ramdiskoptions}
  19. bcdedit /set {ramdiskoptions} ramdisksdidevice [%sdi_drv%]
  20. bcdedit /set {ramdiskoptions} ramdisksdipath %sdi%
复制代码

批处理放到boot.sdi所在文件夹
如果wim文件是同文件夹里的boot.wim,直接点击批处理
如果wim文件不是同文件夹里的boot.wim,将wim文件拖放到批处理上

UEFI平台下修改的是UEFI启动的BCD
BIOS平台下修改的是BIOS启动的BCD
批处理是通用的。
作者: smellsun    时间: 2020-5-21 19:18
liuzhaoyzz 发表于 2020-5-18 06:33
楼主的思路就不对,不能惯着他!

  我是电脑店 ,装机需求 装机需求, 批处理主要给小白用,傻瓜无脑。
同时考虑客户的易用性。
作者: smellsun    时间: 2020-5-21 19:19
liuzhaoyzz 发表于 2020-5-19 18:50
如果一个批处理写出来,只能用于这一台或者同类型的电脑,写了干啥呢?不如直接用bootice搞下算了 ...

批处理效率高。。。1秒
作者: smellsun    时间: 2020-5-21 23:28
liu_zhenfeng 发表于 2020-5-17 01:23

Win7 传统模式下 不成功









作者: 2010sya    时间: 2020-5-21 23:49
装机的话,还是找个一键GHOST或类似的东东吧


不知道能否满足楼主需求?
作者: qingyi78    时间: 2020-5-22 00:51
smellsun 发表于 2020-5-21 23:28
Win7 传统模式下 不成功

用17楼的。我也去试试。
作者: qingyi78    时间: 2020-5-22 00:57
hilsonma 发表于 2020-5-21 05:23
批处理放到boot.sdi所在文件夹
如果wim文件是同文件夹里的boot.wim,直接点击批处理
如果wim文件不是同 ...

高手在这个,我个人测试成功!
作者: xxnh    时间: 2020-5-22 08:51
不用复制到ESP分区,还是放在C盘下比较好,然后批处理就可以通用MBR和UEFI
作者: 坏坏小生    时间: 2020-5-22 09:26
如果你出点RMB的话,直接写成EXE不就更香吗?
作者: tolerantor    时间: 2020-5-22 15:26
谢谢
作者: smellsun    时间: 2020-5-22 18:54
2010sya 发表于 2020-5-21 23:49
装机的话,还是找个一键GHOST或类似的东东吧

不是装机,相当于PE版的一键还原精灵,




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3