无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: 807979023
打印 上一主题 下一主题

[已解决] 能不能用批处理添加wim启动项

  [复制链接]
跳转到指定楼层
1#
发表于 2018-4-5 10:46:29 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 807979023 于 2019-3-6 17:10 编辑

图中用bootice添加的wim启动项,pe启动成功。
请问能不能用批处理添加这个启动项?

1.jpg (103.92 KB, 下载次数: 231)

1.jpg
2#
 楼主| 发表于 2018-4-5 13:21:17 | 显示全部楼层
江南一根葱 发表于 2018-4-5 12:56
可以,我写了个查找当前目录下的wim文件添加到启动菜单,win7下添加测试成功,10貌似没成功,所以搁置着

能不能分享一下,感觉很适用,只要是指定名称的wim都行,我只会添加xp和grldr。

点评

我弄得有点复杂,可以编辑下用,把批处理wim文件和boot.sdi放在同个目录下,不管wim文件名 @echo off rem 硬盘安装Windows时,在现用系统上添加启动要安装系统的boot.wim :: 获取管理员权限运行批处理 >nul 2>  详情 回复 发表于 2018-4-5 20:27
指定WIM需要添加SDI文件的信息,这是个麻烦  详情 回复 发表于 2018-4-5 15:33
回复

使用道具 举报

3#
 楼主| 发表于 2018-4-6 16:21:11 | 显示全部楼层
y7y007 发表于 2018-4-5 19:23
论坛以前qiqiqicool大神的 WimRamOS_制作与热备份工具  批处理里面有这个的

谢谢分享!能够正确添加wim启动项,但启动时0F兰屏,以后再硏究。
回复

使用道具 举报

4#
 楼主| 发表于 2018-4-6 16:22:55 | 显示全部楼层
江南一根葱 发表于 2018-4-5 20:27
我弄得有点复杂,可以编辑下用,把批处理wim文件和boot.sdi放在同个目录下,不管wim文件名

@echo of ...

谢谢分享!批处理和boot.wim和BOOT.SDI 在任意目录中运行,添加错误,运行后兰屏
               批处理和boot.wim和BOOT.SDI 拷贝到c盘boot中运行,添加成功,运行成功
              代码复杂,只能简单改一下。

点评

嗯,应该和目录名称有关,我试过C:\pe之类的短目录可以启动 还有和wim也有关 我这儿的wim用64位可以,32位蓝屏,跟一些参数有关吧,10下貌似没成功  详情 回复 发表于 2018-4-6 19:26
回复

使用道具 举报

5#
 楼主| 发表于 2018-4-6 17:54:48 | 显示全部楼层
终于按自已的要求修改成功,感谢楼上两位提供的代码。

添加wim菜单项.bat :
  1. @echo off
  2. color 1f

  3. set aa=0
  4. if /i %SystemDrive% == x: set aa=1
  5. ver|find "5.">nul && set aa=1
  6. if "%aa%" == "1" (
  7.    cls
  8.    echo.
  9.    echo.
  10.    echo     不能在xp或PE中运行 !
  11.    echo.
  12.    echo     按任意键退出...
  13.    pause >nul
  14.    exit
  15. )

  16. copy boot.wim c:\boot
  17. copy BOOT.SDI c:\boot

  18. :: 获取管理员权限运行批处理
  19. >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
  20. if '%errorlevel%' NEQ '0' (
  21. goto UACPrompt
  22. ) else ( goto gotAdmin )
  23. :UACPrompt
  24. echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
  25. echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
  26. "%temp%\getadmin.vbs" 1>nul 2>nul
  27. exit /b
  28. :gotAdmin
  29. if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ) 1>nul 2>nul
  30. :: 以上是获取管理员权限运行批处理

  31. rem 管理者模式启动仍保持工作路径为脚本所在目录
  32. cd /d "%~dp0"

  33. echo 创建安装程序 Ramdisk 选项
  34. :: bcdedit /create {ramdiskoptions} /d "w8x32PE"
  35. bcdedit /set {ramdiskoptions} ramdisksdidevice partition=c:
  36. bcdedit /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
  37. for /f "tokens=2 delims={}" %%i in ('bcdedit /create /d "Windows Boot" /application osloader') do (
  38.     set id={%%i}
  39. )

  40. echo 创建Windows 启动加载器
  41. bcdedit /set %id% device ramdisk=[c:]\boot\boot.wim,{ramdiskoptions}
  42. bcdedit /set %id% osdevice ramdisk=[c:]\boot\boot.wim,{ramdiskoptions}
  43. :: bcdedit /set %id% path \windows\system32\winload.exe
  44. bcdedit /set %id% description "w8x32PE"
  45. bcdedit /set %id% locale zh-CN
  46. bcdedit /set %id% inherit {bootloadersettings}
  47. bcdedit /set %id% systemroot \windows
  48. bcdedit /set %id% detecthal yes
  49. bcdedit /set %id% winpe yes
  50. bcdedit /set %id% ems no
  51. bcdedit /displayorder %id% /addlast

  52. echo 添加引导信息到系统启动菜单成功 !
  53. echo.
  54. echo 按任意键退出...
  55. pause >nul
复制代码

点评

感谢感谢!成功了  详情 回复 发表于 2019-3-6 11:33
回复

使用道具 举报

6#
 楼主| 发表于 2019-3-6 16:54:11 | 显示全部楼层
inxiaoxi 发表于 2019-3-6 11:33
感谢感谢!成功了

上面这个批处理第1次运行正常,删除新增启动项后,再次运行批处理报错,但启动正常,好像bcd有记忆。
后来改进一下,用当时的秒和毫秒替换id1和id2的前4个值,相当于手工设置变化的id,不再报错。
id值可随变修改,甚至可改成:
set id1={%time:~6,2%%time:~9,2%8888-8888-8888-8888-168168168ffa}
set id2={%time:~6,2%%time:~9,2%8888-8888-8888-8888-168168168ffb}

添加wim菜单项.bat
  1. @echo off
  2. color 1f
  3. echo.
  4. echo.
  5. set aa=0
  6. if /i %SystemDrive% == x: set aa=1
  7. ver|find "5.">nul && set aa=1
  8. if "%aa%" == "1" (
  9.    cls
  10.    echo.
  11.    echo.
  12.    echo     不能在xp或PE中运行 !
  13.    echo.
  14.    echo     按任意键退出...
  15.    pause >nul
  16.    exit
  17. )
  18. set id1={%time:~6,2%%time:~9,2%ffff-8d96-11de-8e71-fffffffffffa}
  19. set id2={%time:~6,2%%time:~9,2%ffff-8d96-11de-8e71-fffffffffffb}
  20. bcdedit /create %id2% /d "w8x32PE" /device
  21. bcdedit /set %id2% ramdisksdidevice partition=c:
  22. bcdedit /set %id2% ramdisksdipath \boot\boot.sdi
  23. echo.
  24. bcdedit /create %id1% /d "w8x32PE" /application osloader
  25. bcdedit /set %id1% device ramdisk=[c:]\boot\BOOT.WIM,%id2%
  26. bcdedit /set %id1% osdevice ramdisk=[c:]\boot\BOOT.WIM,%id2%
  27. bcdedit /set %id1% path \windows\system32\boot\winload.exe
  28. bcdedit /set %id1% description w8x32PE
  29. bcdedit /set %id1% locale zh-CN
  30. bcdedit /set %id1% inherit {bootloadersettings}
  31. bcdedit /set %id1% systemroot \windows
  32. bcdedit /set %id1% detecthal Yes
  33. bcdedit /set %id1% winpe Yes
  34. bcdedit /set %id1% ems no
  35. bcdedit /displayorder %id1% /addlast
  36. echo.
  37. echo 按任意键退出...
  38. pause >nul
复制代码


2.jpg (56.21 KB, 下载次数: 221)

2.jpg

点评

一直很需要,太好了。这个才是修改好最终的批处理吧  发表于 2019-9-12 18:20

评分

参与人数 1无忧币 +5 收起 理由
879792799 + 5 很给力!

查看全部评分

回复

使用道具 举报

7#
 楼主| 发表于 2020-5-19 17:07:30 | 显示全部楼层
小改一下,BOOT.WIM和BOOT.SDI 可以放入任意分区 任意文件夹。
id值{20200519-1646-5277-eeee-fffffffffffa} 表示该启动项添加日期是20年5月19日16点46分52.77秒。
id值绝对不会重复。

  1. @echo off&color 1f&echo.&echo.
  2. set aa=0
  3. if /i %SystemDrive% == x: set aa=1
  4. ver|find "5.">nul && set aa=1
  5. if "%aa%" == "1" cls&echo.&echo.&echo 不能在PE或XP中运行!&echo.&echo 按任意键退出...&pause>nul&exit
  6. set time1=%time%
  7. if "%time1:~0,1%"==" " set time1=0%time1:~1%
  8. set id1={%date:~0,4%%date:~5,2%%date:~8,2%-%time1:~0,2%%time1:~3,2%-%time1:~6,2%%time1:~9,2%-eeee-fffffffffffa}
  9. set id2={%date:~0,4%%date:~5,2%%date:~8,2%-%time1:~0,2%%time1:~3,2%-%time1:~6,2%%time1:~9,2%-eeee-fffffffffffb}
  10. echo.
  11. bcdedit /create %id2% /d "w8x32PE" /device
  12. bcdedit /set %id2% ramdisksdidevice partition=e:
  13. bcdedit /set %id2% ramdisksdipath \00e\boot.sdi
  14. echo.
  15. bcdedit /create %id1% /d "w8x32PE" /application osloader
  16. bcdedit /set %id1% device ramdisk=[e:]\00e\BOOT.WIM,%id2%
  17. bcdedit /set %id1% osdevice ramdisk=[e:]\00e\BOOT.WIM,%id2%
  18. bcdedit /set %id1% path \windows\system32\boot\winload.exe
  19. bcdedit /set %id1% description w8x32PE
  20. bcdedit /set %id1% locale zh-CN
  21. bcdedit /set %id1% inherit {bootloadersettings}
  22. bcdedit /set %id1% systemroot \windows
  23. bcdedit /set %id1% detecthal Yes
  24. bcdedit /set %id1% winpe Yes
  25. bcdedit /set %id1% ems no
  26. bcdedit /displayorder %id1% /addlast
  27. echo.
  28. echo 按任意键退出...
  29. pause >nul
复制代码


3.jpg (89.2 KB, 下载次数: 184)

3.jpg

点评

你确定boot.sdi放在任意分区,真的在所有条件下都能启动?  详情 回复 发表于 2020-5-20 07:25
回复

使用道具 举报

8#
 楼主| 发表于 2020-5-20 10:04:00 | 显示全部楼层
本帖最后由 807979023 于 2020-5-20 10:13 编辑
liuzhaoyzz 发表于 2020-5-20 07:25
你确定boot.sdi放在任意分区,真的在所有条件下都能启动?

简单条件下测试通过,复杂条件下未测试,不知道,可能不行。
另外,grldr也可以放在任意分区任意文件夹,由bcd加载,同样是简单条件测试通过





点评

GPT分区,BCD如果在ESP分区,一般要求boot.sdi也在ESP分区,一般不可能放到“任意分区”下的。 就是MBR分区,也是一般要求boot.sdi与bcd同一个盘符才行,否则无法启动。比如BCD放在100MB那种引导分区  详情 回复 发表于 2020-5-20 12:07
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-8 20:20

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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