您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页bcd1

bcd1

来源:爱go旅游网
逸优启多系统引导Vista/Win7 BCD菜单

2011-01-16 15:50:43 阅读371 评论0 字号:大中小 订阅

rem 这是一个由高级菜鸟改进的用于向Vista、Win7系统添加多系统引导菜单项的一键批处理,可以自定义引导文件名和其它文件所在文件夹的文件夹名。多次试验,稳定可靠。以下是批处理内容,红色部分是全局默认设置,可预先自定义文件名等。复制到文本文档,

扩展名改为bat

@echo off 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=2

rem 设置引导在菜单的名称 set gname=逸优启引导菜单

rem 设置文件、文件夹默认名称,默认分别为grldr.mbr,grldr,文件夹是自己修改设置的

set mbrname=eldr.mbr set ldrname=ldr.e set ldrfile=wx

rem =========================================================

rem set pingtime=20

rem pingtime是程序操作完成后的自动退出等待时间,调节与否随意,这里已注释掉,手动退出,以方便阅读安装过程。gname是bcd启

动菜单显示名称,根据喜好可自己设置,mbrname是mbr的名称,可以自己改名,timeout是bcd菜单等待选择时间,自己随便调

set vid= set destpart=

Set TIT=【逸优启Vista/Win7 BCD菜单项添加与删除批处理】 By高级菜鸟

TITLE %TIT%

echo.

echo 高级菜鸟 改自lianjiang的批处理(wowfans修改版),并添加了大量帮助新手学习的注释,有兴趣的可自行修改以满足自己的设置

要求。 echo.

echo 本批处理将帮助你安全地在VISTA/WIN7/2008/2008R2系统下将【多系统引导】安装或卸载,可自定义要安装的文件的名称,按

默认值一直回车即可智能判断,一键完成!

echo.

echo 该批处理与【多系统引导】文件放在一起即可,不需要复制到C盘后运行

echo.

echo 警告!请确定你是在VISTA/WIN7/2008/2008R2系统下运行本批处理,XP系统下不使用本批处理安装!如果不满足条件,请现在

关闭窗口退出!

echo. pause 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系统中以管理员身份运行,任意键退出.

pause>nul

exit :gaosir

echo 权限检测已通过

rem 去掉隐藏等属性,以免后面的操作找不到文件

attrib -h -s -r %mbrname% >nul 2>nul attrib -h -s -r %ldrname% >nul 2>nul attrib -h -s -r %ldrfile% >nul 2>nul attrib -h -s -r %ldrfile%\\* >nul 2>nul

set inputv= echo.

echo 下面将提示你输入grub引导文件、主体文件、相关文件的文件夹的名称方便安装你自己改名的文件。对于本【多系统引导】不需要输入,一路回车确定即可。(文件已为避免与win7软激活相冲突而特意改过名),若需自定义,输入名称时可用TAB键选择或快速补

齐。 echo.

echo 以下是扩展名为.mbr的文件列表,一般grub引导文件名应该为下面的文件名,仅供参考

dir /a /b *.mbr

echo. echo.

set /p inputv=若确实要自定义,请输入要安装或卸载的grub引导文件名(未改名时为grldr.mbr),直接回车采用默认的%mbrname% :

if not \"%inputv%\"==\"\" set mbrname=%inputv%&&echo 您输入的引导文件名为:%inputv%

echo.

set /p inputv=若确实要自定义,请输入要安装或卸载的grub主体文件名称(未改名时为grldr),直接回车采用默认的%ldrname% :

if not \"%inputv%\"==\"\" set ldrname=%inputv%&&echo 您输入的grub主体文件名为:%inputv%

echo.

set /p inputv=若确实要自定义,请输入要安装或卸载的放有【多系统引导】有关文件的文件夹,直接回车采用默认的%ldrfile%文件夹 :

if not \"%inputv%\"==\"\" set ldrfile=%inputv%&&echo 您输入的文件夹名为:%inputv%

echo. echo.

if not exist %mbrname% echo 请注意,当前目录下没有%mbrname%文件,但仍可以继续安装,安装完成时会提示您将%mbrname%等文件手动复制到您即将选择的安装盘中。(注意:若%mbrname%文件所在位置与将要复制到的位置相同,由于无法自身复制,所以仍会错

误的提示要手动复制,这没关系!)&pause

rem defdest:自定义分区 set defdest=%systemdrive%

rem 找到并设定含有bcd的盘符作为默认安装位置,搜到光驱时可能会弹出没有磁盘!如果不是多系统(特别是不止一个vista以上系

列的系统),BCD一般就在系统盘,就算不是,%destpart%也是可以自定义位置的,下面的搜索其实意义不大。

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:自定义分区

rem 将寻找%mbrpath%决定是安装还是卸载放在寻找defdest后,是为了无论是安装还是卸载都能找到destpart的正确位置

set destpart=%defdest%

rem 如果在temp_bcd.txt中找到了%mbrpath%(屏蔽输出),就转到卸载否则继续安装。

type temp_bcd.txt | find \"%mbrpath%\" >nul && goto un_bcd

goto seldest

:seldest COLOR 1f set inputv= echo.

echo 请输入%mbrname%文件的安装盘符,直接回车采用%destpart%盘根目录

echo 输入盘符时不用输入冒号,如D盘输入D或d即可

echo.

set /p inputv=输入盘符(不带冒号),请直接回车使用默认%destpart%盘:

if not \"%inputv%\"==\"\" set destpart=%inputv%:

if not exist \"%destpart%\\\" goto patherr rem 试着随便创建一个目录:sbcjdygml

md %destpart%\\sbcjdygml rem 创建不成功,转到写错误:writerr if not exist \"%destpart%\\sbcjdygml\" goto writerr rem 存在,表示可写,删除这个随便创建的目录

rd \"%destpart%\\sbcjdygml\"

goto bcd_1

rem 路径错误 :patherr COLOR 16

cls

echo 指定盘符%destpart%无效, 按任意键重新指定!!!

pause goto seldest

rem 指定盘不可写入

:writerr COLOR 16

cls echo.

echo 指定盘不可写入, 可能为光驱, 请重新指定 !!!

pause goto seldest

rem 编辑BCD,安装引导

:bcd_1 echo.

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={\

rem 变量vid记录启动项标识符

for,/f,\"tokens=1 delims=}\

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 {current}

echo.

echo BCD菜单项\"%gname%\"添加完成

rem 复制文件,更改文件属性,去掉要复制文件(否则无法复制)及已存在同名文件的隐藏、系统、只读,复制后再给源和目标加上隐

藏、系统、只读。 if exist %mbrname% (

echo.

echo 开始复制文件到安装目录……

attrib -h -s -r %destpart%\\%mbrname% >nul 2>nul

copy %mbrname% %destpart%\\ /y attrib +h +s +r %destpart%\\%mbrname%

attrib +h +s +r %mbrname%

attrib -h -s -r %destpart%\\%ldrname% >nul 2>nul

copy %ldrname% %destpart%\\ /y

attrib +h +s +r %destpart%\\%ldrname%

attrib +h +s +r %ldrname%

rem 复制文件夹,不使用DOS外部命令xcopy,因为我不知道精简系统的CMD里有没有该命令

rem 先在目标位置创建一个文件夹%ldrfile% attrib -h -s -r %destpart%\\%ldrfile% >nul 2>nul attrib -h -s -r %destpart%\\%ldrfile%\\* >nul 2>nul

rd /s /q %destpart%\\%ldrfile%\\ >nul

md %destpart%\\%ldrfile% rem %ldrfile%后不能加\\

copy %ldrfile%\\ %destpart%\\%ldrfile%\\ /y attrib +h +s +r %destpart%\\%ldrfile%\\* attrib +h +s +r %destpart%\\%ldrfile%

attrib +h +s +r %ldrfile%

echo. echo 复制完成

goto exit ) else (

echo 若有复制失败,请稍后请自行把%mbrname%等多系统引导文件及文件夹拷贝到%destpart%\\根目录

echo.

rem set /a pingtime=%pingtime%+8

Goto exit

) :un_bcd COLOR 2f echo.

echo 系统的BCD启动项中存在项目[\"%mbrpath%\"]。 echo ==============================================

echo. set un_bcd=

Set /P un_bcd= 是否需要卸载%mbrpath%项目?[y/是 n/否]:

If /i %un_bcd%#==y# goto un_bcd_1 rem &第一项执行失败不影响第二项执行 If /i %un_bcd%#==n# echo 卸载已取消...&goto exit

cls echo.

echo 选择错误,请输入Y或者N(不分大小写)后继续

Goto un_bcd

:un_bcd_1

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 显示之前被隐藏了的文件,以便下面判断是否存在该文件,否则会误判。

attrib -h -s -r %destpart%\\%mbrname% >nul 2>nul attrib -h -s -r %destpart%\\%ldrname% >nul 2>nul attrib -h -s -r %destpart%\\%ldrfile% >nul 2>nul attrib -h -s -r %destpart%\\%ldrfile%\\* >nul 2>nul

if exist %destpart%\\%mbrname% (

echo.

echo 清理残留的文件……

attrib -h -s -r %destpart%\\%mbrname% >nul 2>nul

del %destpart%\\%mbrname% >nul

attrib -h -s -r %destpart%\\%ldrname% >nul 2>nul

del %destpart%\\%ldrname% >nul

rem %ldrfile%后不能加\\

attrib -h -s -r %destpart%\\%ldrfile% >nul 2>nul

attrib -h -s -r %ldrfile%\\* >nul 2>nul

rem %ldrfile%后可加可不加\\ rd /s /q %destpart%\\%ldrfile%\\ >nul 2>nul

echo.

echo 文件清理完成

) :exit COLOR 0f

attrib -h -s -r temp_bcd.txt >nul 2>nul

del temp_bcd.txt >nul 2>nul

del vid.ini >nul 2>nul

echo.

echo 请保留该安装与卸载批处理文件,以便以后卸载(或再次安装)【多系统引导】时使用!

echo.

PAUSE >nul

rem echo %pingtime%秒后窗口自动关闭 rem ping -n %pingtime% 127.0.0.1 >nul

exit

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务