标题: [系统相关] [已解决]bcdedit修改bcd启动文件的批处理 [打印本页]
作者: freesoft00 时间: 2014-3-16 21:05 标题: [已解决]bcdedit修改bcd启动文件的批处理
- @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
复制代码
dos菜鸟网友的代码,我需要在列表中同时显示出设备,然后选择哪个项可以删除。
还需要修改说明,选择第几项后,输入新的说明后就更改。
代码应该如何写呢。
作者: DAIC 时间: 2014-3-16 22:24
29到36行改成这样:- for /f "tokens=1*" %%c in ('bcdedit /v') do (
- if %%c*==标识符* (
- set /a n=!n!+1
- echo ---!n!------------------------------------------------
- echo ID: %%d
- ) else if %%c*==description* (
- echo 说明: %%d
- ) else if %%c*==device* (
- echo 设备: %%d
- )
- )
复制代码
作者: freesoft00 时间: 2014-3-16 23:26
谢谢,有设备显示了,但是删除的时候无法删除。
我在代码最后加了一个pause暂停显示上面的信息。可是运行中需要按两次次任意键才可以到输入数字项的地方。
这个代码是否再改进一下,或者从写一些。
另外,修改说明的部分如何写。
bcdedit修改锁门的命令好像是
bcdedit /set {id} description "新的说明"
批处理给用户一个选,按1是删除,按2是修改,然后进行下面的具体操作。如果可以,增加一个3添加也可以.
作者: apang 时间: 2014-3-17 09:29
没做测试- @echo off & setlocal enabledelayedexpansion
- :top
- cls & echo,1.删除 BOOTMGR BCD 启动项目
- echo,2.修改 description
- set /p choice=选择[1-2]:
- echo,%choice%|findstr "^[1-2]$" || goto :top
- :st
- cls & set "n="
- for /f "tokens=1*" %%a in ('bcdedit /v') do (
- if "%%a"=="标识符" (
- set /a n+=1
- echo,---!n!------------------------------------------------
- set "ID!n!=%%b" & echo, ID: %%b
- )
- if /i "%%a"=="description" echo,说明: %%b
- if /i "%%a"=="device" echo,设备: %%b
- )
- echo,---End----------------------------------------------
-
- echo,&echo,选择一个项目编号并回车确认[1-%n%]:
- set /p p=
- if not defined ID%p% goto :st
- if "%choice%"=="1" (
- bcdedit /delete !ID%p%!
- ) else (
- set /p p1=输入修改后的 description :
- bcdedit /set !ID%p%! description "!p1!"
- )
- pause
复制代码
作者: DAIC 时间: 2014-3-17 10:41
可是运行中需要按两次次任意键才可以到输入数字项的地方。
echo ---End--------------------------------------------------
在这句上面加一句:复制代码
作者: DAIC 时间: 2014-3-17 10:48
set /a p=%p%*3-2
改成:
set /a p=%p%*3-1
作者: freesoft00 时间: 2014-3-18 14:38
感谢提点,谢谢了
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |