无忧启动论坛

标题: Bcdedit 忘记了id 怎么进行删除启动项. [打印本页]

作者: 2011xiaochi    时间: 2011-3-17 19:15
标题: Bcdedit 忘记了id 怎么进行删除启动项.
bcdedit /delete {id} 忘记了id 要怎么删除
(注:要批处理的)



[ 本帖最后由 2011xiaochi 于 2011-3-17 19:28 编辑 ]
作者: dgxhls    时间: 2011-3-17 23:10
bcdedit查看一下不就知道了。
作者: 2011xiaochi    时间: 2011-3-18 20:18
原帖由 dgxhls 于 2011-3-17 23:10 发表
bcdedit查看一下不就知道了。

批理完成的,是不手工处理的。
作者: 不才    时间: 2011-3-18 22:12
原帖由 2011xiaochi 于 2011-3-18 20:18 发表

批理完成的,是不手工处理的。

嘿嘿,按照2#所说的操作,将查得的id填入你的批后再运行,算不手工处理的不?
作者: dos时代菜鸟    时间: 2011-3-22 09:37
我简单编辑了一个有选择的删除某个 id 的批处理
内容如下:
应该可以达到你的要求。中文win7环境测试成功

------------------------------------------------
@echo off
cls
setlocal ENABLEDELAYEDEXPANSION
if %1*==bcd* goto bcd
:top
cls
echo.
echo 删除 BOOTMGR BCD 启动项目
echo.
call :bcd

echo.
echo 请选择要删除的项目编号并回车确认(1.2.3.4...)_______
echo Ctrl+C 可以中断脚本
echo.

set /p p=
if %p% LSS 1 GOTO ERROR1
if %p% GTR %n% goto error1
set /a p=%p%*3-2
for /f "skip=%p% tokens=1,2" %%c in ('call %0 bcd') do (
bcdedit /delete %%d
echo 项目删除指令运行完毕!
goto end1
)

:error1
echo 输入错误,按任意键重来! && pause >nul
goto top

:bcd
set n=0
for /f "tokens=1,2*" %%c in ('bcdedit /v') do (
if %%c*==标识符* (
  set /a n=!n!+1
  echo ---!n!------------------------------------------------   
  echo   ID: %%d %%e
  )
if %%c*==description* echo 说明: %%d %%e
)
  echo ---End--------------------------------------------------
:end1

-----------------------------------

用 bcdedit 配合 for 实现 id + 菜单项列表 ,然后交由 用户通过  set /p  选择指定项目后 从 bcd 菜单中删除之


[ 本帖最后由 dos时代菜鸟 于 2011-3-22 11:44 编辑 ]
作者: freesoft00    时间: 2011-3-23 11:39
运行后和菜鸟的显示不一样。


环境,双系统xp+win7,上面的图片是在xp下运行的,xp在C盘。
作者: dos时代菜鸟    时间: 2011-3-23 14:02
请 在 中文 win7 环境运行。
很显然,你xp中运行的 bcdedit 不是 中文的。所以无法找到  bcdedit /v 命令 输入的文本流当中的 "标识符" 三个字
作者: freesoft00    时间: 2011-3-25 12:13
原来的批处理在win7中文下没有问题。
我在xp下面那个bcdedit确实不是中文版的。
作者: dos时代菜鸟    时间: 2011-3-25 12:32
标题: 回复 #8 freesoft00 的帖子
看看 英文 的 "标识符"  id 怎么表示。然后才可以改cmd.
作者: chenbaker    时间: 2011-12-6 13:50
标题: 回复 #5 dos时代菜鸟 的帖子
能否写一个“添加”和“删除”的秕处理
作者: dos时代菜鸟    时间: 2011-12-14 19:07
标题: 回复 #10 chenbaker 的帖子
添加,很简单,cmd 大概只需要6句话就可搞定。
找一下我发过类似帖子。

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=167130&highlight=%2Bdos%CA%B1%B4%FA%B2%CB%C4%F1

[ 本帖最后由 dos时代菜鸟 于 2011-12-14 19:08 编辑 ]
作者: zhoubin    时间: 2012-6-14 09:08
标题: 回复 #5 dos时代菜鸟 的帖子
请问:
如何不用交互式删除呢?
删除 BOOTMGR BCD 启动项目
---1------------------------------------------------
  ID: {9dea862c-5cdd-4e70-acc1-f32b344d4795}
说明: Windows Boot Manager
---2------------------------------------------------
  ID: {d2009321-6bf8-11e1-b011-a371cb679d3e}
说明: Windows 7
---3------------------------------------------------
  ID: {4addc719-b513-11e1-b0ae-005056c00008}
说明: Start Windows XP PE
---4------------------------------------------------
  ID: {4addc71a-b513-11e1-b0ae-005056c00008}
说明: Start 32Bit Windows7 PE
---5------------------------------------------------
  ID: {4addc71b-b513-11e1-b0ae-005056c00008}
说明: Start 64Bit Windows7 PE
---6------------------------------------------------
  ID: {4addc71c-b513-11e1-b0ae-005056c00008}
说明: Start Grub4DOS
---End--------------------------------------------------
请选择要删除的项目编号并回车确认(1.2.3.4...)_______
Ctrl+C 可以中断脚本

正在写一个安装卸载的批处理,遇到一点困难。。。
如:上表中的3、4、5、6项,不用交互式,直接删除,不知该怎么写。。。
谢谢!!!
作者: dos时代菜鸟    时间: 2012-6-14 18:13
标题: 回复 #12 zhoubin 的帖子
如果能确定“说明” 的内容,可以编辑 直接自动删除 “说明” 对应的 id

简单写了一个如下代码,感觉可以更简洁,自己研究吧,中文 win7 测试通过。
  1. @echo off
  2. if "%~1"=="" goto error
  3. set n=0
  4. setlocal ENABLEDELAYEDEXPANSION
  5. echo 删除 %~1...检索中......
  6. for /f "delims=" %%c in ('bcdedit /v') do (
  7. set l0=%%c
  8. if "!l0:~0,3!"=="标识符" set id=!l0:~21!
  9. if "!l0:~0,11!"=="description" (
  10. set d=!l0:~24!
  11. if "!d!"=="%~1" (echo !d!:!id! & echo 找到目标...删除中...&set n=1 & bcdedit /delete !id!)
  12. )
  13. )
  14. if !n!==0 (echo. & echo 目标未找到!)
  15. goto :eof
  16. :error
  17. echo Please press the Argument %%1!
  18. echo Like bcd_d "Grub for dos"
复制代码
你可以把你要删除的 bcd 项目名称 写入一个文件 t.txt
内容如下:
  1. Start Windows XP PE
  2. Start 32Bit Windows7 PE
  3. Start 64Bit Windows7 PE
  4. Start Grub4DOS
复制代码
然后在cmd 下运行
  1. for /f "delims=" %c in (t.txt) do bcd_d "%c"
复制代码

[ 本帖最后由 dos时代菜鸟 于 2012-6-14 19:28 编辑 ]

bcd_d.JPG (17.75 KB, 下载次数: 86)

bcd_d.JPG

作者: zhoubin    时间: 2012-6-15 11:29
标题: 回复 #13 dos时代菜鸟 的帖子
感谢dos大哥的回复。。。
我在32位win7下测试了一下,这个只能在cmd命令行下使用,谢谢dos大哥。。。。

捕获.JPG (139.85 KB, 下载次数: 103)

捕获.JPG

作者: dos时代菜鸟    时间: 2014-6-30 17:00
这个是交互模式的,已经剔除了 Windows Boot Manager 的显示

  1. @echo off
  2. cls
  3. setlocal ENABLEDELAYEDEXPANSION
  4. if %1*==bcd* goto bcd
  5. :top
  6. cls
  7. echo.
  8. echo 删除 BOOTMGR BCD 启动项目
  9. echo.
  10. call :bcd
  11. echo.
  12. echo 请选择要删除的项目编号并回车确认(1.2.3.4...)_______
  13. echo Ctrl+C 中断脚本!
  14. echo.
  15. set/a p=0 && set /p p=
  16. if %p% EQU 99 GOTO end1
  17. if %p% LSS 1 GOTO ERROR1
  18. if %p% GTR %n% goto error1
  19. set /a p=%p%*3-2
  20. for /f "skip=%p% tokens=1,2" %%c in ('call %0 bcd') do (
  21. bcdedit /delete %%d
  22. echo 项目删除指令运行完毕!
  23. goto end1
  24. )

  25. :error1
  26. echo 输入错误,按任意键重来! && pause >nul
  27. goto top

  28. :bcd
  29. set n=0
  30. for /f "tokens=1,2*" %%c in ('bcdedit /v') do (
  31. if %%c*==标识符* (
  32.   set /a n=!n!+1
  33.   set "id=  ID: %%d %%e"
  34.   )
  35. if %%c*==description* (
  36.   if not "%%d %%e"=="Windows Boot Manager" (
  37.    echo ---!n!------------------------------------------------
  38.    echo !id!
  39.    echo 说明: %%d %%e
  40.   ) else (set n=!n!-1)
  41. )
  42. )
  43.   echo ---End--------------------------------------------------
  44. :end1

复制代码

捕获.JPG (28.68 KB, 下载次数: 69)

捕获.JPG





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