[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] [已解决]bat命令搭配bcdedit,如何添加/删除/修改win7 64系统的启动菜单项目?

[已解决]bat命令搭配bcdedit,如何添加/删除/修改win7 64系统的启动菜单项目?
  1. set "bcdedit=%SystemRoot%\System32\bcdedit.exe"
  2. %bcdedit% /create {ntldr} /d "通用PE工具箱2"
  3. %bcdedit% /set {ntldr} device partition=C:
  4. %bcdedit% /set {ntldr} path \8888\ABSPE
  5. %bcdedit% /set {ntldr} inherit {bootloadersettings}
  6. %bcdedit% /set {ntldr} locale zh-CN
  7. %bcdedit% /displayorder {ntldr} /addfirst
复制代码
这个命令,生成的启动项目是:0.jpg照片截图。


某个pe.exe软件,在win7 64系统下安装完以后,会生成启动菜单项目是:1.jpg照片截图。


bat命令搭配bcdedit,如何添加/删除/修改类似pe.exe软件生成的启动菜单项目?
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 ygqiang 于 2015-1-20 21:39 编辑
  1. :通用PE工具箱5.0-win7-64
  2. setlocal enabledelayedexpansion
  3. set tim=3
  4. set descri="通用PE工具箱5.0"
  5. set "bcdedit=%SystemRoot%\System32\bcdedit.exe"
  6. set "rar=C:\Program Files (x86)\WinRAR\WinRAR.exe"
  7. if not exist c:\8888 "%rar%" x -y "通用PE工具箱5.0.rar" c:\
  8. echo %bcdedit%
  9. %bcdedit% /v >list.txt
  10. %bcdedit% /enum >list1.txt
  11. %bcdedit% /timeout %tim%
  12. echo,赋值初始行指针
  13. set /a "nLine=0"
  14. echo,&echo,
  15. echo,查找符合条件总共有多少个节点
  16. set /a "nCount=0"
  17. for /f "delims=" %%i in ('findstr /i /r "通用.*PE" list.txt') do set /a "nCount+=1"
  18. echo,总共有 !nCount! 个节点符合要求
  19. echo,&echo,
  20. echo,设置查找次数标记
  21. set /a "nIndex=0"
  22. echo,&echo,
  23. :_start
  24. set /a "nIndex+=1"
  25. set "strID!nIndex!="
  26. for /f "tokens=1,2* delims=: " %%i in ('^(more +!nLine! list.txt^) ^| findstr /n /r "通用.*PE"') do (
  27. set /a "desLine=nLine+%%i"
  28. echo,当前发现符合条件描述在 : !desLine! 行
  29. set /a "nLine=desLine"
  30. echo,查到目标,更新行指针为 : !nLine!
  31. echo,完整描述内容为         : %%k
  32. echo,&echo,
  33. echo,从描述行前推4行,作为more的传入参数,作单循环处理便可查询当前节点的标识符
  34. set /a "desLine-=4"
  35. if !desLine! LSS 0 set /a "desLine=0"
  36. for /f "tokens=1,*" %%a in ('^(more +!desLine! list.txt^)^|findstr /i /r "标识符"') do (
  37. echo,查询当前节点的标识符为 : %%b
  38. set "strID!nIndex!=%%b"
  39. goto :next
  40. )
  41. )
  42. :next
  43. if !nIndex! LEQ !nCount! (
  44. echo,现在你已经得到标识符了,它存于变量strID!nIndex!里面,如果为空,则无符合条件
  45. call echo,strID!nIndex!值 : %%strID!nIndex!%%
  46. echo,==========================================&echo,&echo,
  47. REM 做你要做的事情
  48. REM Code here...
  49. REM 要做的事情结束
  50.         call %bcdedit% /delete %%strID!nIndex!%%
  51. set /a "nLine+=1"
  52. echo,现在将行指针下移一行,继续开始查找符合条件项
  53. echo,新的行指针为 : !nLine!
  54. )
  55. if !nIndex! LEQ !nCount! goto :_start
  56. %bcdedit% /v >list2.txt
  57. :creatt
  58. %bcdedit% /create {777778af-66c9-4ad4-a54e-d76256db09e1} /application bootsector /d %descri%
  59. %bcdedit% /set {777778af-66c9-4ad4-a54e-d76256db09e1} device partition=C:
  60. %bcdedit% /set {777778af-66c9-4ad4-a54e-d76256db09e1} path \8888\PELOAD
  61. %bcdedit% /displayorder {777778af-66c9-4ad4-a54e-d76256db09e1} /addlast
  62. %bcdedit% /v >list3.txt
  63. cls
  64. ping 127.0.0.1 -n 1 >nul 2>nul
  65. del /f /q list*.txt
  66. 1pause&goto :EOF
复制代码

TOP

初步解决了。
  1. :通用PE工具箱5.0-win7-64
  2. setlocal enabledelayedexpansion
  3. set tim=3
  4. set descri="通用PE工具箱5.0"
  5. set "bcdedit=%SystemRoot%\System32\bcdedit.exe"
  6. set "rar=C:\Program Files (x86)\WinRAR\WinRAR.exe"
  7. if not exist c:\8888 "%rar%" x -y "通用PE工具箱5.0.rar" c:\
  8. echo %bcdedit%
  9. 1%bcdedit% /v >list.txt
  10. 1%bcdedit% /enum >list.txt
  11. %bcdedit% /timeout %tim%
  12. set "strID="
  13. for /f "tokens=1,2* delims=: " %%i in ('findstr /n /r "通用.*PE" list.txt') do (
  14. echo,当前发现符合条件描述在 : %%i 行
  15. set /a "desLine=%%i"
  16. echo,完整描述内容为         : %%k
  17. echo,&echo,
  18. echo,从描述行前推4行,作为more的传入参数,作单循环处理便可查询当前节点的标识符
  19. set /a "desLine-=4"
  20. if !desLine! LSS 0 set /a "desLine=0"
  21. for /f "tokens=1,*" %%a in ('more +!desLine! list.txt^|findstr /i /r "标识符"') do (
  22. echo,查询当前节点的标识符为 : %%b
  23. set "strID=%%b"
  24. goto :next
  25. )
  26. )
  27. :next
  28. echo,现在你已经得到标识符了,它存于变量strID里面,如果为空,则无符合条件
  29. echo,strID值 : !strID!
  30. if "!strID!" EQU "" goto :creatt
  31. %bcdedit% /delete !strID!
  32. 1%bcdedit% /enum >list.txt
  33. :creatt
  34. %bcdedit% /create {777778af-66c9-4ad4-a54e-d76256db09e1} /application bootsector /d %descri%
  35. %bcdedit% /set {777778af-66c9-4ad4-a54e-d76256db09e1} device partition=C:
  36. %bcdedit% /set {777778af-66c9-4ad4-a54e-d76256db09e1} path \8888\PELOAD
  37. %bcdedit% /displayorder {777778af-66c9-4ad4-a54e-d76256db09e1} /addlast
  38. 1%bcdedit% /enum >list2.txt
  39. cls
  40. ping 127.0.0.1 -n 1 >nul 2>nul
  41. del /f /q list*.txt
  42. 1pause&goto :EOF
复制代码

TOP

bcdedit /delete {ntldr}
bcdedit /delete {777778af-66c9-4ad4-a54e-d76256db09e1}


bcdedit /create ...
yiwuyun 发表于 2015-1-20 08:41



    搞定了。。。多谢。。
  1. %bcdedit% /create {777778af-66c9-4ad4-a54e-d76256db09e1} /application bootsector /d "通用PE工具箱5.0"
  2. %bcdedit% /set {777778af-66c9-4ad4-a54e-d76256db09e1} device partition=C:
  3. %bcdedit% /set {777778af-66c9-4ad4-a54e-d76256db09e1} path \8888\PELOAD
  4. %bcdedit% /displayorder {777778af-66c9-4ad4-a54e-d76256db09e1} /addlast
复制代码

TOP

bcdedit /delete {ntldr}
bcdedit /delete {777778af-66c9-4ad4-a54e-d76256db09e1}


bcdedit /create ...
yiwuyun 发表于 2015-1-20 08:41



    多谢。。。
  1. set "bcdedit=%SystemRoot%\System32\bcdedit.exe"
  2. %bcdedit% /create {777778af-66c9-4ad4-a54e-d76256db09e1} /application bootsector
  3. %bcdedit% /create {777778af-66c9-4ad4-a54e-d76256db09e1} /d "通用PE工具箱9"
  4. %bcdedit% /set {777778af-66c9-4ad4-a54e-d76256db09e1} device partition=C:
  5. %bcdedit% /set {777778af-66c9-4ad4-a54e-d76256db09e1} path \8888\PELOAD
  6. %bcdedit% /displayorder {777778af-66c9-4ad4-a54e-d76256db09e1} /addlast
复制代码
这个命令,生成如下菜单:
实模式启动扇区
---------------------
标识符                  {777778af-66c9-4ad4-a54e-d76256db09e1}
device                  partition=C:
path                    \8888\PELOAD


如何修改,才能生成下面这种菜单?

TOP

bcdedit /delete {ntldr}
bcdedit /delete {777778af-66c9-4ad4-a54e-d76256db09e1}


bcdedit /create {ntldr}
bcdedit /create {777778af-66c9-4ad4-a54e-d76256db09e1} /application bootsector
1

评分人数

TOP

本帖最后由 ygqiang 于 2015-1-20 07:54 编辑
  1. set "bcdedit=%SystemRoot%\System32\bcdedit.exe"
  2. %bcdedit% /enum >>list.txt
复制代码
生成list.txt文件内容如下:
  1. Windows 启动管理器
  2. --------------------
  3. 标识符                  {bootmgr}
  4. device                  partition=C:
  5. description             Windows Boot Manager
  6. locale                  en-us
  7. inherit                 {globalsettings}
  8. default                 {current}
  9. resumeobject            {b562ed91-5fbd-11e2-bdba-b9260cd4d68b}
  10. displayorder            {ntldr}
  11.                         {current}
  12.                         {777778af-66c9-4ad4-a54e-d76256db09e1}
  13. toolsdisplayorder       {memdiag}
  14. timeout                 3
  15. Windows 旧 OS 加载器
  16. ------------------------
  17. 标识符                  {ntldr}
  18. device                  partition=C:
  19. path                    \8888\ABSPE
  20. description             通用PE工具箱2
  21. locale                  zh-CN
  22. inherit                 {bootloadersettings}
  23. Windows 启动加载器
  24. -------------------
  25. 标识符                  {current}
  26. device                  partition=C:
  27. path                    \windows\system32\winload.exe
  28. description             Windows 7
  29. locale                  en-us
  30. inherit                 {bootloadersettings}
  31. testsigning             Yes
  32. osdevice                partition=C:
  33. systemroot              \windows
  34. resumeobject            {b562ed91-5fbd-11e2-bdba-b9260cd4d68b}
  35. nx                      OptIn
  36. detecthal               Yes
  37. 实模式启动扇区
  38. ---------------------
  39. 标识符                  {777778af-66c9-4ad4-a54e-d76256db09e1}
  40. device                  partition=C:
  41. path                    \8888\PELOAD
  42. description             通用 PE 工具箱5.0
复制代码
Windows 旧 OS 加载器
实模式启动扇区

这2个项目,通过bat命令搭配bcdedit,如何删除?删除以后,如何重新建立“实模式启动扇区”这个项目?

TOP

返回列表