中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 给 Vista 启动菜单添加 GRUB4DOS 项的批处理
作者:
标题: 给 Vista 启动菜单添加 GRUB4DOS 项的批处理 上一主题 | 下一主题
hnfeng
初级用户





积分 89
发帖 36
注册 2007-12-20
状态 离线
『楼 主』:  给 Vista 启动菜单添加 GRUB4DOS 项的批处理

在 XP 下,直接修改 boot.ini 即可添加 GRUB4DOS 项,但是在 Vista 下就没那么简单。
因公司和家里的电脑都是 XP + Vista ,前几日多次试验 GURB4DOS 的功能。之前在 添加这个菜单项都是手工添加,今天做了个批处理,共享出来吧。为防止菜鸟...,前面加了一些垃圾。

下面的批处理将自动添加 GRUB4DOS 启动项到 Vista 的启动菜单中:

===== Add_GRUB4DOS_Menu.bat =====

@echo off
echo 该批处理自动往 Vista 系统的启动菜单中添加 GRUB4DOS 的启动项。
echo 如果不是单一的 Vista(还有XP,2K),必须在 Vista 下运行。
echo 另外,需以管理员身份运行。
echo .
pause

ver | find "6.0." > NUL && goto START
ver | find "XP" > NUL && goto XP2K
ver | find "2000" > NUL && goto XP2K
goto EXIT

:XP2K
echo 不能在 WinXP 或 Win2000 中运行该批处理。
goto EXIT

REM ============= 以上的内容纯属...... ==============

:START
cls

bcdedit | find "\grldr.mbr" > NUL && echo 启动项中已有grub4dos,无需重复安装。&& goto EXIT
bcdedit /create /d "Boot From GRUB4DOS" /application bootsector >GrubID.txt
rem 上面欲增加的GRUB菜单名,可以修改为"GRUB For DOS"、"DOS + GHOST" 等等

for /f "tokens=2" %%i in (GrubID.txt) do set GrubID=%%i
del GrubID.txt > NUL
bcdedit /set %GrubID% device partition=%SystemDrive%
bcdedit /set %GrubID% path \grldr.mbr
bcdedit /displayorder %GrubID% /addlast

echo .
echo 上面应出现 3 个“操作成功完成。”
echo .
echo 请自行复制 grldr.mbr 到 %SystemDrive%\
echo .
echo 请自行复制 grldr 到 C:\
echo .
echo 根据需要,请自行复制其他有关文件,如 menu.lst, fonts, memdisk.gz 及背景图片等文件到相应位置。

:EXIT

====== THE END =====
各人使用 GRUB4DOS 的方式可能各有不同,所以没有自动复制 grldr.mbr 等文件,还是自己复制感觉稳妥吧。

[ Last edited by hnfeng on 2008-1-30 at 01:09 PM ]

   此帖被 +2 点积分    点击查看详情   
评分人:【 429499381 分数: +2  时间:2008-1-30 01:10


2008-1-29 17:04
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 2 楼』:  

支持一下。
还有进一步完善的余地。



Windows 一键还原
http://www.yjhy.com
2008-1-29 17:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hnfeng
初级用户





积分 89
发帖 36
注册 2007-12-20
状态 离线
『第 3 楼』:  

一楼的批处理有个问题:删除这个菜单项时需要手工操作:
进入CMD, 运行 bcdedit,找到“实模式启动扇区”,复制其下面的“标识符”(包含大括号的那串字符),键入 bcdedit /delete 粘贴刚刚复制的内容,回车即可。

为了方便,我稍稍修改一下 Add_GRUB4DOS_Menu.bat,然后可以使用下面的 Del_GRUB4DOS_Menu.bat 自动删除 GRUB4DOS 启动项。

===== Add_GRUB4DOS_Menu.bat =====

@echo off
echo 该批处理自动往 Vista 系统的启动菜单中添加 GRUB4DOS 的启动项。
echo 如果不是单一的 Vista(还有XP,2K),必须在 Vista 下运行。
echo 另外,需以管理员身份运行。
echo .
pause

ver | find "6.0." > NUL && goto START
ver | find "XP" > NUL && goto XP2K
ver | find "2000" > NUL && goto XP2K
goto EXIT

:XP2K
echo 不能在 WinXP 或 Win2000 中运行该批处理。
goto EXIT

REM ============= 以上的内容纯属...... ==============

:START
cls

bcdedit | find "\grldr.mbr" > NUL && echo 启动项中已有grub4dos,无需重复安装。&& goto EXIT
bcdedit /create /d "Boot From GRUB4DOS" /application bootsector >%SystemRoot%\GrubID.txt
rem 上面欲增加的GRUB菜单名,可以修改为"GRUB For DOS"、"DOS + GHOST" 等等

for /f "tokens=2" %%i in (%SystemRoot%\GrubID.txt) do set GrubID=%%i

bcdedit /set %GrubID% device partition=%SystemDrive%
bcdedit /set %GrubID% path \grldr.mbr
bcdedit /displayorder %GrubID% /addlast

echo .
echo 上面应出现 3 个“操作成功完成。”
echo .
echo 请自行复制 grldr.mbr 到 %SystemDrive%\
echo .
echo 请自行复制 grldr 到 C:\
echo .
echo 根据需要,请自行复制其他有关文件,如 menu.lst, fonts, memdisk.gz 及背景图片等文件到相应位置。

:EXIT
====== THE END =====

===== Del_GRUB4DOS_Menu.bat =====
@echo off
bcdedit | find "\grldr.mbr" > NUL && goto START

echo 启动菜单中没找到 grub4dos 项。
goto EXIT

:START
cls
if not exist %SystemRoot%\GrubID.txt goto ERROR
for /f "tokens=2" %%i in (%SystemRoot%\GrubID.txt) do set GrubID=%%i
bcdedit /delete %GrubID%
Del %SystemRoot%\GrubID.txt > NUL
goto EXIT


:ERROR
echo 找不到 %SystemRoot%\GrubID.txt,不能自动删除。

:EXIT
====== THE END =====

[ Last edited by hnfeng on 2008-1-30 at 01:10 PM ]

2008-1-29 17:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
429499381
中级用户





积分 452
发帖 202
注册 2006-12-21
状态 离线
『第 4 楼』:  

既然是为了方便菜鸟,那么请人务必把相关工具给个链接!

  我觉得你应该把这个批处理做一个通用性的XP 2003 VIST的

  多启动菜单 (不包括LINUX)

     要求如下:
               自动识别该计算机有几个系统

               在系统文件(boot)中写入相互启动的菜单

               xp 2003 vist通用
      
               不破坏原来的启动菜单

               有安全的卸载功能
            

  我想应该对于您来说不会很难吧!!  呵呵, 写好后

  我会把此贴置顶一段时间。

2008-1-30 01:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hnfeng
初级用户





积分 89
发帖 36
注册 2007-12-20
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by 429499381 at 2008-1-30 01:09 AM:
……
    要求如下:
               自动识别该计算机有几个系统
               在系统文件(boot)中写入相互启动的菜单
               xp 2003 vist通用
               不破坏原来的启动菜单
               有安全的卸载功能
...

第一个基本不用理会吧。下面三个问题也不大。
最后一条不好办,因为我暂时还不知道怎么删除文件里面的特定的行。
如果使用一个备份文件替换回来,那么在此期间对启动菜单所做的变动(如新安装系统或者手动修改)将全部消失,不妥不妥。

另外,好像没什么人对这个话题感兴趣。我还是不要继续瞎忙了。

2008-1-30 19:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复
429499381
中级用户





积分 452
发帖 202
注册 2006-12-21
状态 离线
『第 6 楼』:  

如果一点点事都要很多人感兴趣的话,恐怕会有很次失望。

  为何你不证明一下你行, 为何不想办法让更多人对此话题感兴趣呢?

2008-2-20 00:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zg888
初级用户





积分 37
发帖 17
注册 2007-1-27
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by 429499381 at 2008-1-30 01:09 AM:
既然是为了方便菜鸟,那么请人务必把相关工具给个链接!

  我觉得你应该把这个批处理做一个通用性的XP 2003 VIST的

  多启动菜单 (不包括LINUX) ...

XP/2003用系统自带的bootcfg命令很好办
pushd %SystemDrive%\
set btini=boot.ini
attrib -s -h -r %btini%
FIND /I "c:\grldr" %btini%
::没有就添加一个启动项c:\grldr="grubdos"
IF "%ERRORLEVEL%"=="1" @echo.c:\grldr="grubdos">>%btini%
for /f  "tokens=1,2* delims=: " %%i in ('bootcfg/query^|findstr /I /n "c:\grldr"') do set /a hang=%%i - 2
for /f "tokens=1-5 delims=: " %%i in ('bootcfg/query^| findstr /i /n "启动项目"') do if "%%i"=="%hang%" set qdid=%%l
bootcfg /Delete /ID %qdid%
pause

因为鄙人没有用过VISTA,固VISTA下就不知道了

2008-4-20 16:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yankaiqian
初级用户




积分 122
发帖 10
注册 2004-3-9
状态 离线
『第 8 楼』:  看到這個我才弄明白之前的一個事情

多謝!

一兩周前我也想試著通過VISTA的引導管理器來引導grub for dos,然后在網上看到這個頁面介紹:
http://grub4dos.sourceforge.net/ ... 4dos安装和启动

我當時就在vista下面執行了如下三個語句:
bcdedit /create /d "Start GRUB4DOS" /application bootsector
bcdedit /set {id} device boot
bcdedit /set {id} path \grldr.mbr
bcdedit /displayorder {id} /addlast

其中 {id} 我替換成了第一條命令的輸出內容,可是下面第二個命令后面的boot我沒有變,就照樣輸入進去。結果引導不了,當時還以為是grldr.mbr文件有問題了呢……

今天看到這個帖子,就將那個“boot”改為“partition=C:”就OK了!

2008-4-23 11:23
查看资料  发送邮件  发短消息 网志  OICQ (11866364)  编辑帖子  回复  引用回复
690712
初级用户





积分 32
发帖 16
注册 2007-1-25
状态 离线
『第 9 楼』:  

正好要学习一下

2008-5-11 09:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 10 楼』:  

这几天正关心这个,正好复制回去好好学学,谢谢了。

--------------------------------------------------------------------------------------------------
看完想问个问题,比较菜,见谅。

以前 XP 时可以在 BOOT.INI 中加 c:\grldr="Start GRUB4DOS",然后只要一个 grldr 文件,不需要 grldr.mbr 文件。为何在 Vista 下要带上这个文件?有办法和原来一样只要一个 grldr ,不带 grldr.mbr 吗?

[ Last edited by NaturalJ0 on 2008-5-13 at 12:37 AM ]

2008-5-12 23:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
billbear
新手上路





积分 4
发帖 2
注册 2009-2-1
状态 离线
『第 11 楼』:  

实际上, vista 和 win7 尽管使用 bcd,但仍然会去读 boot.ini(如果有的话)。因此可以沿用老办法。在 c 盘根目录自己写一个 boot.ini :

[boot loader]
[operating systems]
c:\grldr.mbr="grub4dos"

请注意上面的引号,xp 是可以不用引号的, vista 和 win7 必须有。
然后把 grldr 和 grldr.mbr 拷贝到 c 盘根目录就可以了。

2009-2-3 22:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: