主要是 bcdedit 命令那里重要 bcd能引导grub, 需要注意 引导brldr.mbr而不是grldr
2011/7/9 Peter Derek <1and1g...@gmail.com> > CODE:====================== > --=== windows 7 ===-- > --=== grub ===-- > @echo off > cd /d %~dp0 > del temp_bcd.txt >nul 2>nul > COLOR f9 > set timeout=5 > set gname=GRUB 4 DOS > set mbrname=grldr.mbr > set pingtime=5 > rem > pingtime是程序操作完成后的自动退出等待时间,调节与否随意,gname是bcd启动菜单显示名称,根据喜好可自己设置,mbrname是mbr的名称,可以自己改名,timeout是bcd菜单等待选择时间,自己随便调 > set vid= > set destpart= > Set TIT=在bootmgr系统启动项中安装与卸载(grub4dos)项目的批处理 > TITLE %TIT% > echo. > echo 检测权限... > bcdedit >temp_bcd.txt 2>nul > type temp_bcd.txt | find "Windows Boot Manager" >nul && goto gaosir > del temp_bcd.txt >nul 2>nul > echo 请在VISTA/WIN7/2008系统中以管理员身份运行,任意键退出. > pause>nul > exit > :gaosir > echo 权限检测已通过 > set inputv= > echo. > echo 请输入你要安装的文件全名,若不输入直接回车采用默认值%mbrname% > echo 以下是扩展名为.mbr的文件列表,仅供参考 > dir /a /b *.mbr > echo. > echo. > set /p inputv=输入安装的文件名,直接回车采用%mbrname%,可用TAB键选择或快速补齐: > if not "%inputv%"=="" set mbrname=%inputv% > echo. > echo. > if not exist %mbrname% echo > 请注意,当前目录下没有%mbrname%文件,但仍可以继续安装,安装完成时会提示您将%mbrname%文件手动复制到您即将选择的安装盘中&pause > set gname2=\%mbrname% > type temp_bcd.txt | find "%gname2%" >nul && goto un_bcd > set defdest=%systemdrive% > 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:&goto seldest > :seldest > set destpart=%defdest% > COLOR f9 > 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 > md %destpart%\v7ts6qk9 > if not exist "%destpart%\v7ts6qk9" goto writerr > rd "%destpart%\v7ts6qk9" > goto bcd_1 > :patherr > color 0c > cls > echo 指定盘符%destpart%无效, 按任意键重新指定!!! > pause > goto seldest > :writerr > color 0c > cls > echo. > echo 指定盘不可写入, 可能为光驱, 请重新指定 !!! > pause > goto seldest > :bcd_1 > bcdedit /create /d "%gname%" /application bootsector >vid.ini > for,/f,"tokens=2 delims={",%%i,In (vid.ini) Do set vida=%%i > for,/f,"tokens=1 delims=}",%%i,In ("%vida%") Do set vid={%%i} > bcdedit /set %vid% device partition=%destpart% >nul > bcdedit /set %vid% path %gname2% >nul > bcdedit /displayorder %vid% /addlast >nul > bcdedit /timeout %timeout% >nul > echo BCD菜单项"%gname%"添加完成 > if exist %mbrname% ( > attrib %destpart%\%mbrname% -h -s -r >nul 2>nul > copy %mbrname% %destpart%\ /y > attrib %destpart%\%mbrname% +h +s +r > goto exit > ) else ( > echo 稍后请自行把%mbrname%拷贝到%destpart%\根目录 > echo. > set /a pingtime=%pingtime%+8 > Goto exit > ) > :un_bcd > echo. > echo Vista的BCD启动项中存在项目["%gname2%"]。 > echo ============================================== > echo. > set un_bcd= > Set /P un_bcd= 是否需要卸载%gname2%项目 ?[y/是 n/否]: > If /i %un_bcd%#==y# goto un_bcd_1 > 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 %gname2% 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 > type temp_bcd.txt | find "%gname2%" >nul && goto un_bcd > echo 已成功卸载%gname2%项目 > if exist %destpart%\%mbrname% ( > attrib -h -s -r %destpart%\%mbrname% >nul > del %destpart%\%mbrname% >nul > ) > :exit > del temp_bcd.txt >nul 2>nul > del temp_bcd1.txt >nul 2>nul > del vid.ini >nul 2>nul > echo %pingtime%秒后窗口自动关闭 > ping -n %pingtime% 127.0.0.1 >nul > > > > > > > > 2011/7/9 zhiwei chen <zhiw...@gmail.com> > >> 在此我要说明一点,我用的是win7专业版正版系统,里面都是原装的东东。 >> 对于以上有同学说win7可以加载boot.ini的情况,我想到了两点:1.win7先加载bcd然后加载boot.ini >> 2.win7为正版,被第三方修改过了。 >> >> 我最近又尝试了几次,大概明白自己硬盘安装不成功的原因了、 >> win7的启动管理器不能加载grldr或neogrub.mbr。 BCD的启动项已经加上了,但是不能正常使用。 >> 我用过的方法,现在详细说明一下: >> >> 1. 直接在win7系统盘下新建个boot.ini文件,其他与winxp系统硬盘安装相同。 >> 2. 使用easybcd新建启动项。 >> 3. 使用bootice修改win7启动项。 >> >> 2和3修改启动项是修改成功了,但是win7无法加载。说是找不到grldr或neogrub.mbr。 >> >> >> 现在总结一下:win7启动项是修改好了,grldr文件内容正常,文件没有被破坏,但win7启动项就是没法加载(在win7启动菜单点击该启动项时提示文件不存在或已经被破坏)。我目前是用的wubi安装的,硬盘留下了60G空间,等着安装与win7平行的ubuntu。 >> >> 2011/7/8 Shellexy Wang <jhuangjia...@gmail.com> >> >> > 没试过不要随意下结论。 >> > >> > 我自己的 win7 就用 boot.ini 写了 grub2 启动项。 >> > >> > 你从默认没 boot.ini 怎么能推论出不读 boot.ini >> > >> > 2011/7/8 cat.s <llz916...@yahoo.com.cn> >> > >> > > >> 这个是有问题的,windows7的启动方式不一样,不会去读boot.ini。。。实际上,如果你装windows7,你都不会发现boot.ini。 >> > > >> > > 启动方式已经完全变掉了,编辑windows7的启动菜单的命令是bcdedit。 >> > > >> > > >> > > >> > -------------- next part -------------- >> > An HTML attachment was scrubbed... >> > URL: < >> > >> https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20110708/bff7b78b/attachment.html >> > > >> > -- >> > ubuntu-zh mailing list >> > ubuntu-zh@lists.ubuntu.com >> > https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh >> > >> -------------- 下一部分 -------------- >> 一个HTML附件被移除... >> URL: < >> https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20110709/44079e81/attachment.html >> > >> -- >> ubuntu-zh mailing list >> ubuntu-zh@lists.ubuntu.com >> https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh >> > > > > -- > 此致 > 敬礼 > -- 此致 敬礼 -------------- 下一部分 -------------- 一个HTML附件被移除... URL: <https://lists.ubuntu.com/archives/ubuntu-zh/attachments/20110709/d54fc0e6/attachment.html> -- ubuntu-zh mailing list ubuntu-zh@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh