无忧启动论坛

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

如何用批处理直接将毛桃PE的启动项添加至Vista的启动菜单?

[复制链接]
跳转到指定楼层
1#
发表于 2008-2-15 17:55:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如何用批处理直接将毛桃PE的启动项添加至Vista的启动菜单?

不能用BcdEditPro
2#
 楼主| 发表于 2008-2-15 17:57:46 | 只看该作者
这个bcdedit命令还真的有点勇于接受
回复

使用道具 举报

3#
 楼主| 发表于 2008-2-15 17:59:24 | 只看该作者
列表后只有这些东西,下一步,将PE的启动菜单添加到Vista的菜单,如何做了?

C:\>bcdedit

Windows 启动管理器
--------------------
标识符              {bootmgr}
device                  partition=C:
description             Windows Boot Manager
locale                  zh-CN
inherit                 {globalsettings}
default                 {current}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 30

Windows 启动加载器
-------------------
标识符              {current}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Microsoft Windows Vista
locale                  zh-CN
inherit                 {bootloadersettings}
osdevice                partition=C:
systemroot              \Windows
resumeobject            {6a3d6273-cbe8-11dc-bd3e-a12130f2e802}
nx                      OptIn

C:\>
回复

使用道具 举报

4#
 楼主| 发表于 2008-2-15 18:00:26 | 只看该作者
C:\>bcdedit /v

Windows 启动管理器
--------------------
标识符              {9dea862c-5cdd-4e70-acc1-f32b344d4795}
device                  partition=C:
description             Windows Boot Manager
locale                  zh-CN
inherit                 {7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e}
default                 {6a3d6272-cbe8-11dc-bd3e-a12130f2e802}
displayorder            {6a3d6272-cbe8-11dc-bd3e-a12130f2e802}
toolsdisplayorder       {b2721d73-1db4-4c62-bf78-c548a880142d}
timeout                 30

Windows 启动加载器
-------------------
标识符              {6a3d6272-cbe8-11dc-bd3e-a12130f2e802}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Microsoft Windows Vista
locale                  zh-CN
inherit                 {6efb52bf-1766-41db-a6b3-0ee5eff72bd7}
osdevice                partition=C:
systemroot              \Windows
resumeobject            {6a3d6273-cbe8-11dc-bd3e-a12130f2e802}
nx                      OptIn
回复

使用道具 举报

5#
发表于 2008-2-15 18:01:52 | 只看该作者
er 看看lianjiang的那个bat 稍做修改就可以了
回复

使用道具 举报

6#
发表于 2008-2-15 20:09:51 | 只看该作者
用bcdedit是正路,这是在我那sata、raid版里的一个文件,给你个参考。

思路是添加bcd项,让其引导grub的grldr.mbr,然后再引导grldr。

SETUP.rar

797 Bytes, 下载次数: 125, 下载积分: 无忧币 -2

回复

使用道具 举报

7#
发表于 2008-2-15 20:11:56 | 只看该作者
如果不想通过grub,也可参考uepon的通用pe,他那pe是通过添加bcd项目,直接引导setupldr.bin
回复

使用道具 举报

8#
 楼主| 发表于 2008-2-16 10:04:31 | 只看该作者
原帖由 zjqcomputer 于 2008-2-15 08:11 PM 发表
如果不想通过grub,也可参考uepon的通用pe,他那pe是通过添加bcd项目,直接引导setupldr.bin


能否帮我提取出来?谢谢
回复

使用道具 举报

9#
发表于 2008-2-16 10:48:59 | 只看该作者
我嬴政不是回答你了吗,郁闷`

下面的批处理
@echo off
COLOR f9
set vid=
set timeout=5
set gname=你的启动项
set gname2=\PELOAD  //这里你的引导文件
TITLE 设置通用PE工具箱的Vista引导
bcdedit >temp_bcd.txt
type temp_bcd.txt | find "Windows Boot Manager" >nul && goto bcd_1
goto exit

:bcd_1
bcdedit >temp_bcd.txt
type temp_bcd.txt | find "%gname2%" >nul && goto un_bcd_1
bcdedit   /create /d "%gname%" /application bootsector >%windir%\pevid.ini
for,/f,"tokens=2 delims={",%%i,In (%windir%\pevid.ini) Do (
               set vida=%%i
)
for,/f,"tokens=1 delims=}",%%i,In ("%vida%") Do (
               set vid={%%i}
)
echo %vid%>%windir%\pevid.ini
bcdedit   /set %vid% device partition=%systemdrive%   >nul
bcdedit   /set %vid% path %gname2% >nul
bcdedit   /displayorder %vid% /addlast >nul
bcdedit   /timeout   %timeout% >nul
goto exit

:un_bcd_1
for,/f,"tokens=1",%%i,In (%windir%\pevid.ini) Do (
                set vid=%%i
)
bcdedit /delete %vid% /cleanup >nul
del %windir%\pevid.ini
goto bcd_1

:exit
del temp_bcd.txt
回复

使用道具 举报

10#
发表于 2008-2-16 10:50:17 | 只看该作者
原帖由 zjqcomputer 于 2008-2-15 08:11 PM 发表
如果不想通过grub,也可参考uepon的通用pe,他那pe是通过添加bcd项目,直接引导setupldr.bin

中间有个 AVLDR ,不知道直接setupldr.bin可以不。

[ 本帖最后由 uepon 于 2008-2-16 11:28 AM 编辑 ]
回复

使用道具 举报

11#
 楼主| 发表于 2008-2-16 11:25:40 | 只看该作者
原帖由 uepon 于 2008-2-16 10:48 AM 发表
我嬴政不是回答你了吗,郁闷`

下面的批处理
@echo off
COLOR f9
set vid=
set timeout=5
set gname=你的启动项
set gname2=\PELOAD  //这里你的引导文件
TITLE 设置通用PE工具箱的Vista引导
bcdedit ...


谢谢...刚才到你的坛里灌水去了,没认真看
回复

使用道具 举报

12#
发表于 2008-2-16 11:27:45 | 只看该作者
我看到你啦,在我的站务公开区用匿名给我灌了点“水”。谢谢啦,嘿嘿。
回复

使用道具 举报

13#
 楼主| 发表于 2008-2-16 11:43:20 | 只看该作者
原帖由 uepon 于 2008-2-16 11:27 AM 发表
我看到你啦,在我的站务公开区用匿名给我灌了点“水”。谢谢啦,嘿嘿。

呵呵,我得谢谢你啊...

一直不懂Bcdedit,是不是那个标识符号只要按MS的标准,只要不重复就可以乱写啊
回复

使用道具 举报

14#
 楼主| 发表于 2008-2-16 12:19:02 | 只看该作者
似乎你的还是用XP的启动管理模式加载的啊
回复

使用道具 举报

15#
 楼主| 发表于 2008-2-16 12:19:46 | 只看该作者
BOOTAPP     启动应用程序。这些类型也应用于启动管理器、
            内存诊断应用程序、Windows OS 加载器和恢复
            应用程序。
BOOTMGR     启动管理器。
BOOTSECTOR  启动扇区应用程序。
CUSTOMTYPES 自定义类型。
DEVOBJECT   设备对象附加选项。
FWBOOTMGR   固件启动管理器
MEMDIAG     内存诊断应用程序
NTLDR       以前的 Windows OS 版本附带的 OS 加载器
OSLOADER    Windows Vista OS 加载器
RESUME      恢复应用程序
回复

使用道具 举报

16#
 楼主| 发表于 2008-2-16 12:26:52 | 只看该作者
原帖由 secowu 于 2008-2-16 11:43 AM 发表

呵呵,我得谢谢你啊...

一直不懂Bcdedit,是不是那个标识符号只要按MS的标准,只要不重复就可以乱写啊


看来是我乱想的嘛
1.用bcdedit   /create /d "%gname%" /application bootsector >%windir%\pevid.ini
   创建一个启动项名称,保存的文件是系统返回的ID
2.用下面的命令从文件获得ID,
for,/f,"tokens=2 delims={",%%i,In (%windir%\pevid.ini) Do (
               set vida=%%i
)
for,/f,"tokens=1 delims=}",%%i,In ("%vida%") Do (
               set vid={%%i}
)
echo %vid%>%windir%\pevid.ini

3.继续完成启动项的添加
bcdedit   /set %vid% device partition=%systemdrive%   >nul
bcdedit   /set %vid% path %gname2% >nul
bcdedit   /displayorder %vid% /addlast >nul
bcdedit   /timeout   %timeout% >nul

谢谢李培聪啊.学习了.终于会修改启动菜单项了
回复

使用道具 举报

17#
 楼主| 发表于 2008-2-16 12:35:34 | 只看该作者
保存INI文件以便卸载VID
回复

使用道具 举报

18#
发表于 2008-2-16 12:53:08 | 只看该作者
LS正解
下面是我的卸载程式:

@echo off
COLOR f9
set vid=
set gname2=\PELOAD
TITLE 删除通用PE工具箱的Vista引导
bcdedit >%windir%\temp_bcd.txt
type %windir%\temp_bcd.txt | find "Windows Boot Manager" >nul && goto un_bcd_1
del %windir%\temp_bcd.txt

:un_bcd_1
for,/f,"tokens=1",%%i,In (%windir%\pevid.ini) Do (
                set vid=%%i
)
bcdedit /delete %vid% /cleanup >nul
del %windir%\pevid.ini
del %windir%\temp_bcd.txt
del %windir%\unpeboot.cmd
回复

使用道具 举报

19#
 楼主| 发表于 2008-2-16 13:07:14 | 只看该作者
原帖由 uepon 于 2008-2-16 12:53 PM 发表
LS正解
下面是我的卸载程式:

@echo off
COLOR f9
set vid=
set gname2=\PELOAD
TITLE 删除通用PE工具箱的Vista引导
bcdedit >%windir%\temp_bcd.txt
type %windir%\temp_bcd.txt | find "Windows Bo ...


在安装的批处理里看到你已经删除了这个文件啊

(%windir%\pevid.ini)

何来的?
回复

使用道具 举报

20#
 楼主| 发表于 2008-2-16 13:10:36 | 只看该作者
关于取得ID,似乎这个更不错啊
小小强的


  1. SET CLASSID=
  2. for /f "tokens=2 delims={}" %%i in ('bcdedit.exe /create /d "%INFO%" /application bootsector') do SET CLASSID=%%i
  3. IF "%CLASSID%"=="" GOTO createerr
  4. SET CLASSID={%CLASSID%}
  5. echo %CLASSID%>CLASSID
复制代码
回复

使用道具 举报

21#
 楼主| 发表于 2008-2-16 13:11:20 | 只看该作者
看完整代码

  1. @echo off
  2. SET TP=%~dp0
  3. SET TP=%TP:~0,-1%
  4. SET BAKPATH=C:\BOOT\BCDBAK.BAK
  5. SET INFO=WinPe工具箱 By 小小强
  6. SET MBRP=\WXPE\ZJQPE.MBR
  7. SET LDRP=C:\ZJQPE

  8. color 2f
  9. IF NOT EXIST "C:\boot\BCD" (
  10. cls
  11. echo.
  12. echo                  安装PE引导环境到Windows Vista
  13. echo                   作者:小小强  QQ:381458536
  14. echo    ===========================================================
  15. echo.
  16. echo    文件C:\boot\BCD不存在,你没有安装Vista,程序无法继续。
  17. echo    按任意键退出。。。。。。
  18. echo.
  19. pause>nul
  20. goto end
  21. )
  22. cd /d "%TP%"



  23. bcdedit.exe /enum all | find "%MBRP%" && goto installed
  24. IF NOT EXIST "%BAKPATH%" start /wait bcdedit.exe /export "%BAKPATH%"
  25. SET CLASSID=
  26. for /f "tokens=2 delims={}" %%i in ('bcdedit.exe /create /d "%INFO%" /application bootsector') do SET CLASSID=%%i
  27. IF "%CLASSID%"=="" GOTO createerr
  28. SET CLASSID={%CLASSID%}
  29. echo %CLASSID%>CLASSID
  30. bcdedit.exe /set %CLASSID% device boot >nul
  31. bcdedit.exe /set %CLASSID% path %MBRP% >nul
  32. bcdedit.exe /displayorder %CLASSID% /addlast >nul
  33. bcdedit.exe /timeout 3 >nul
  34. attrib +h +s +r %LDRP% >nul 2>nul
  35. echo.
  36. echo    安装完成,按任意键退出。。。。。。
  37. echo.
  38. pause>nul
  39. goto end



  40. :installed
  41. echo.
  42. echo    本机已经安装过PE,请先卸载!
  43. echo    按任意键退出。。。。。。
  44. echo.
  45. pause>nul
  46. goto end



  47. :createerr
  48. echo.
  49. echo    创建BCD项错误,安装无法继续!
  50. echo    按任意键退出。。。。。。
  51. echo.
  52. pause>nul
  53. goto end



  54. :end
  55. echo on
  56. exit
复制代码
回复

使用道具 举报

22#
 楼主| 发表于 2008-2-16 13:13:12 | 只看该作者
小小强的卸载代码怎么没放在一起?
回复

使用道具 举报

23#
发表于 2008-2-16 13:13:33 | 只看该作者
仔细分析你估计能知道:

:bcd_1
下面这句如果已经安装了这个启动项就跳到:un_bcd_1,这个是删除了启动项。然后:un_bcd_1执行完了会跳回来重新安装,这样做的目的是实现安装的时候如过存在不是退出,而是替换!
type temp_bcd.txt | find "%gname2%" >nul && goto un_bcd_1
。。。
:un_bcd_1
for,/f,"tokens=1",%%i,In (%windir%\pevid.ini) Do (
                set vid=%%i
)
bcdedit /delete %vid% /cleanup >nul
del %windir%\pevid.ini
goto bcd_1
回复

使用道具 举报

24#
发表于 2008-2-16 13:18:07 | 只看该作者
原帖由 secowu 于 2008-2-16 01:13 PM 发表
小小强的卸载代码怎么没放在一起?

不知道 它的 ID 放到了 CLASSID里。
回复

使用道具 举报

25#
 楼主| 发表于 2008-2-16 13:20:18 | 只看该作者
原帖由 uepon 于 2008-2-16 01:13 PM 发表
仔细分析你估计能知道:

:bcd_1
下面这句如果已经安装了这个启动项就跳到:un_bcd_1,这个是删除了启动项。然后:un_bcd_1执行完了会跳回来重新安装,这样做的目的是实现安装的时候如过存在不是退出,而是替换 ...


原来这样,为什么不直接删除而是bcdedit /delete %vid% /cleanup?
回复

使用道具 举报

26#
 楼主| 发表于 2008-2-16 13:21:45 | 只看该作者
还是cleanup好,免得多了很多
回复

使用道具 举报

27#
 楼主| 发表于 2008-2-16 13:24:09 | 只看该作者
你的在Vista下启动PE还是得加这几个文件吧

ntldr
boot.ini
bootfont.bin
ntdetect.com
回复

使用道具 举报

28#
发表于 2008-2-16 13:33:55 | 只看该作者
ntdetect.com
好像有这个就好啦
bootfont.bin
是字体。
回复

使用道具 举报

29#
 楼主| 发表于 2008-2-16 13:34:38 | 只看该作者
原帖由 uepon 于 2008-2-16 01:33 PM 发表
ntdetect.com
好像有这个就好啦
bootfont.bin
是字体。


我来实机测试下....
回复

使用道具 举报

30#
发表于 2008-2-16 13:37:34 | 只看该作者
ntdetect.com
这个VISTA里有吗?
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-1 03:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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