注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

高级菜鸟

积累并顺便分享AI,启动技术,C#,ASP.net等知识的地方

 
 
 

日志

 
 

逸优启Vista/Win7 BCD菜单项添加与删除批处理软件调用版  

2011-01-16 15:58:50|  分类: 启动技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

rem 这是一个由高级菜鸟改进编写的用于向Vista、Win7系统添加多系统引导菜单项的一键批处理,本版专用于软件的调用,不与用户进行交互,要自定义文件名等须预先在下面红色部分的全局设置里更改。多次试验,稳定可靠。以下是批处理内容。复制到文本文档,扩展名改为bat (逸优启电脑维护专家

@echo off
rem 专用于程序调用:增加参数传递,删减交互等功能(输出文字保留当作注释),用于【逸优启电脑维护专家安装与帮助工具】
rem 传递来的参数为install时,若原本没安装过,则直接安装,若原本安装过,则先卸载再安装;参数为uninstall时,若安装过则转入卸载,若没安装过直接退出。若非管理员权限则写报错文件“权限不够”,成功写“操作成功”供程序读取,注:读文本以判断时,后面要加上回车换行符

:start
cd /d %~dp0
rem >nul 屏蔽标准输出在屏幕上的显示,2>nul 是屏蔽出错显示,>nul 2>nul 是无论对错,都屏蔽屏幕显示。
attrib -h -s -r temp_bcd.txt >nul 2>nul
del temp_bcd.txt >nul 2>nul
COLOR 1f
rem ==============以下是全局设置项,自行设置=================
set timeout=3
rem 设置引导在菜单的名称
set gname=逸优启引导菜单

rem 设置文件名称
set mbrname=eldr.mbr
set ldrname=e.ldr
rem =========================================================

set vid=
set destpart=
Set TIT=【逸优启Vista/Win7 BCD菜单项添加与删除批处理软件调用版】 By高级菜鸟

TITLE %TIT%
echo.
echo 高级菜鸟 改自lianjiang的批处理(wowfans修改版),并添加了帮助新手学习的注释。
echo.
echo 检测权限...
rem 直接运行bcdedit相当于bcdedit /enum active列出启动菜单上有的项目,all指所有项目标。加/v用完整标志符取代特殊标识符。下面是将bcd的内容输出到temp_bcd.txt文件中。&&前面的执行失败,后面的不执行
bcdedit >temp_bcd.txt 2>nul
rem type显示文本文件的内容,| 读取前一个命令中的输出作为后一个命令的输入
type temp_bcd.txt | find "Windows Boot Manager" >nul && goto gaosir
rem 若找不到Windows Boot Manager证明不是管理员,删掉刚刚用来记录BCD内容的文件。
del temp_bcd.txt >nul 2>nul
echo 请在VISTA/WIN7/2008/2008R2系统中以管理员身份运行,任意键退出.
echo 权限不够>%temp%\installlog.txt 2>nul
exit

:gaosir
echo 权限检测已通过

rem defdest:默认目标
set defdest=%systemdrive%
rem 找到并设定含有bcd的盘符作为默认安装位置,搜到光驱时有时会弹出没有磁盘,且由于本批处理是在要安装到的系统下运行,当\Boot\BCD所在盘是通过在该系统下删除盘符实现隐藏时,那么应该搜索不到盘符,而逸优启多系统引导文件好像并不一定要放在\Boot\BCD所在盘(未实测)。为了尽量不弹出错误,注释掉。

rem for %%i in (c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %%i:\Boot\BCD set defdest=%%i:

rem mbrname的路径,就放根目录下
set mbrpath=\%mbrname%
rem destpart:分区,defdest:默认目标
set destpart=%defdest%
rem 如果在temp_bcd.txt中找到了%mbrpath%(屏蔽输出),就转到卸载否则继续安装。
type temp_bcd.txt | find "%mbrpath%" >nul && goto un_bcd
goto bcd_1

:bcd_1
rem 根据传递的参数,决定是安装还是退出
IF /I "%1"=="uninstall" goto exit

rem 编辑BCD,开始安装
echo 正在将"%gname%"项添加到BCD
rem create创建一个启动项,/d 指定菜单里的文字。XP示例:bcdedit /create {ntldr} /d "Win XP"
rem VISTA:bcdedit /create /d "VISTA" /application osloader
rem osloader:操作系统加载器,bootsector:启动扇区
bcdedit  /create /d "%gname%" /application bootsector >vid.ini
for,/f,"tokens=2 delims={",%%i,In (vid.ini) Do set vida=%%i
rem 变量vid记录启动项标识符
for,/f,"tokens=1 delims=}",%%i,In ("%vida%") Do set vid={%%i}
rem 设置文件路径
bcdedit  /set %vid% device partition=%destpart%  >nul
bcdedit  /set %vid% path %mbrpath% >nul
rem displayorder设置启动项启动顺序,如:bcdedit /displayorder {legacy} {current} 将首先显示Windows XP,然后再显示默认启动的系统如Windows 7;不清楚具体情况可加 /addfirst /addlast参数,如:将现在安装的【多系统引导】项放最后:bcdedit  /displayorder %vid% /addlast >nul
rem {legacy} :指存在上一代Windows系统如Windows XP的硬盘或分区;{default} : 默认操作系统所在硬盘或分区;{current} : 当前硬盘或分区;
bcdedit  /displayorder %vid% /addfirst >nul
bcdedit  /timeout  %timeout% >nul
rem 设置默认启动项,如:bcdedit /default %vid% 设定现在添加的项目为默认启动项 ; bcdedit /default {ntldr} 设定默认启动操作系统为NTLDR;bcdedit /default {current} 将目前所处的操作系统作为默认启动的项目。

rem 如果想保留现在默认启动项目不变动,请去掉或注释掉下面这条
bcdedit /default %vid%
echo.
echo BCD菜单项"%gname%"添加完成
goto exit


rem 卸载
:un_bcd
for /f "tokens=1 delims=:" %%i In ('findstr /n %mbrpath%  temp_bcd.txt') Do (
Set nid=%%i
)
set /a nid=%nid%-3
for /f "skip=%nid% tokens=2" %%i in (temp_bcd.txt) do set vid=%%i&goto vidok


:vidok
bcdedit /delete %vid% /cleanup >nul
bcdedit /timeout   %timeout% >nul
bcdedit >temp_bcd.txt
rem 菜单中可能有多个重复的%mbrpath%项目录,转回再试直到所有的都清除
type temp_bcd.txt | find "%mbrpath%" >nul && goto un_bcd
echo.
echo 已成功卸载%mbrname%项目

rem 前面如果设置了新增的项目为默认启动项,则卸载后要设一个其它的项目为默认
bcdedit /default {current}

rem 根据传递的参数,决定是否在卸载后安装
IF /I "%1"=="install" goto start


:exit
echo 操作成功>%temp%\installlog.txt 2>nul
attrib -h -s -r temp_bcd.txt >nul 2>nul
del temp_bcd.txt >nul 2>nul
rem 修正后不需要vid.ini配置文件也能卸载
del vid.ini >nul 2>nul
exit

  评论这张
 
阅读(2182)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018