无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 5222|回复: 15
打印 上一主题 下一主题

[求助] 请教grub4dos的checkrange命令

[复制链接]
跳转到指定楼层
1#
发表于 2011-4-26 15:05:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教grub4dos的checkrange命令

假设变量temp在之前由用户输入,其值为1或2或3或4或5,现要:若temp的值不为1-5,即为0、6、字母等,则返回主菜单,否则继续执行,我用checkrange命令未实现,现请教如何进行:

checkrange 1:5 echo %temp% || configfile /grub4dos/menu.lst


[ 本帖最后由 qj_tzy 于 2011-4-26 15:07 编辑 ]
2#
发表于 2011-4-26 15:06:51 | 只看该作者
checkrange 1:5 calc %temp% || configfile /grub4dos/menu.lst
回复

使用道具 举报

3#
 楼主| 发表于 2011-4-26 15:40:58 | 只看该作者

回复 #2 zxw 的帖子

在grub4dos使用ANSI编码时测试成功,谢谢!

但我用别人的message,且用以下代码段的utf-8编码的gfxmenu中,不能正常执行,即使其值在1-5之外,也不返回主菜单,仍继续执行,但其他菜单项能正常执行。不知何故,是否是message中包含了grldr的旧版本造成的,还望指教。

gfxmenu /grub4dos/message
configfile (md)4+8

[ 本帖最后由 qj_tzy 于 2011-4-26 15:44 编辑 ]
回复

使用道具 举报

4#
发表于 2011-4-26 16:02:31 | 只看该作者

回复 #3 qj_tzy 的帖子

信息太少,无法奉告。
回复

使用道具 举报

5#
 楼主| 发表于 2011-4-26 16:15:32 | 只看该作者

回复 #4 zxw 的帖子

一、使用utf-8编码的gfxmenu不能正常执行
find --set-root /grub4dos/qj_jw.tzy | set curoot=
gfxmenu /grub4dos/message
configfile (md)4+8
default 1
timeout 10

title 1111
......

title xxxxx
echo 1-aaaa
echo 2-bbbb
echo 3-cccc
echo 4-dddd
echo 5-eeeee
set /p user=Please Input 1-5 (Input Others to Return Main Menu):
#下句不能正常执行。值在1-5之外时,还是继续执行,不能返回主菜单。
checkrange 1:5 calc %user% || configfile %curoot%/grub4dos/menu.lst
if "%user%"=="1" ....
if "%user%"=="2" ....
.......


二、使用ANSI编码的普通menu能正常执行
find --set-root /grub4dos/qj_jw.tzy | set curoot=
splashimage /grub4dos/blue.xpm.gz
fontfile /grub4dos/Fonts.gz

default 1
timeout 10

title 1111
......

title xxxxx
echo 1-aaaa
echo 2-bbbb
echo 3-cccc
echo 4-dddd
echo 5-eeeee
set /p user=Please Input 1-5 (Input Others to Return Main Menu):
#下句能判断值在1-5之外时,不继续执行,而是返回主菜单。这是我希望的。
checkrange 1:5 calc %user% || configfile %curoot%/grub4dos/menu.lst
if "%user%"=="1" ....
if "%user%"=="2" ....
.......



[ 本帖最后由 qj_tzy 于 2011-4-26 16:25 编辑 ]
回复

使用道具 举报

6#
发表于 2011-4-26 16:18:27 | 只看该作者

回复 #5 qj_tzy 的帖子

find --set-root /grub4dos/qj_jw.tzy | set curoot=
gfxmenu /grub4dos/message
configfile (md)4+8
default 1
timeout 10

改为如下试试:
timeout 10
default 1
find --set-root /grub4dos/qj_jw.tzy | set curoot=
gfxmenu /grub4dos/message
configfile (md)4+8
回复

使用道具 举报

7#
 楼主| 发表于 2011-4-26 16:28:16 | 只看该作者

回复 #6 zxw 的帖子

以下两句的前后位置不影响checkrange命令的执行结果,此前我已试过。
timeout 10
default 1
回复

使用道具 举报

8#
发表于 2011-4-26 17:03:17 | 只看该作者
最好不要在configfile命令后再执行其他的命令  一个思路  未测试

find --set-root /grub4dos/qj_jw.tzy | set curoot=
gfxmenu /grub4dos/message
configfile (md)4+8
default 1
timeout 10

#第0项菜单
title 1111
......

#第10项菜单(例)
title xxxxx
echo 1-aaaa
echo 2-bbbb
echo 3-cccc
echo 4-dddd
echo 5-eeeee
set /p user=Please Input 1-5 (Input Others to Return Main Menu):
#下句不能正常执行。值在1-5之外时,还是继续执行,不能返回主菜单。
checkrange 1:5 calc %user% && goto 11
configfile %curoot%/grub4dos/menu.lst

#第11项菜单(例)
title \n
if "%user%"=="1" ....
if "%user%"=="2" ....
.......
回复

使用道具 举报

9#
发表于 2011-4-26 17:54:39 | 只看该作者
确实,utf-8编码的lst会使命令无效。已上报此bug

[ 本帖最后由 zhaohj 于 2011-4-26 18:06 编辑 ]
回复

使用道具 举报

10#
发表于 2011-4-26 18:57:13 | 只看该作者
我简单试了一下没有发现异常...

请详细报告.

可以上传一个最小化的可以重现的镜像.

另外请使用最新版的GRUB4DOS测试
回复

使用道具 举报

11#
 楼主| 发表于 2011-4-26 21:34:57 | 只看该作者

回复 #8 sratlf 的帖子

谢谢指点,我将按您指点的思路,重新修改我的菜单。
回复

使用道具 举报

12#
 楼主| 发表于 2011-4-26 21:37:11 | 只看该作者

回复 #10 chenall 的帖子

我在上面测试时,已使用2011-4-16的grub4dos。
回复

使用道具 举报

13#
 楼主| 发表于 2011-4-27 09:04:37 | 只看该作者

回复 #10 chenall 的帖子

若选项只有两项,换用if not "%user%"=="1" if not "%user%"=="2" configfile %curoot%/grub4dos/menu.lst句时,在使用utf-8编码的gfxmenu仍然不能正常执行,而在使用ANSI编码的普通menu却能正常执行,具体如下:

一、使用utf-8编码的gfxmenu不能正常执行
find --set-root /grub4dos/qj_jw.tzy | set curoot=
gfxmenu /grub4dos/message
configfile (md)4+8
default 1
timeout 10

title 1111
......

title xxxxx
echo 1-aaaa
echo 2-bbbb
set /p user=Please Input 1-2 (Input Others to Return Main Menu):
#下句不能正常执行。值在1-2之外时,还是继续执行,不能返回主菜单。
if not "%user%"=="1" if not "%user%"=="2" configfile %curoot%/grub4dos/menu.lst
if "%user%"=="1" ....
if "%user%"=="2" ....
.......

二、使用ANSI编码的普通menu能正常执行
find --set-root /grub4dos/qj_jw.tzy | set curoot=
splashimage /grub4dos/blue.xpm.gz
fontfile /grub4dos/Fonts.gz
default 1
timeout 10

title 1111
......

title xxxxx
echo 1-aaaa
echo 2-bbbb
set /p user=Please Input 1-2 (Input Others to Return Main Menu):
#下句能判断值在1-2之外时,不继续执行,而是返回主菜单。这是我希望的。
if not "%user%"=="1" if not "%user%"=="2" configfile %curoot%/grub4dos/menu.lst
if "%user%"=="1" ....
if "%user%"=="2" ....
.......


[ 本帖最后由 qj_tzy 于 2011-4-27 09:07 编辑 ]
回复

使用道具 举报

14#
发表于 2011-4-27 10:33:12 | 只看该作者
我测试了一下也正常,不过没加gfxmenu /grub4dos/message

你改成下面测试一下:
terminal console
set /p user=please input 0-2 (other return main menu):
checkrange 0:2 calc %user% || configfile (md)4+8
default %user%
timeout 50

title 0  TEST 0
......
title 1  TEST 1
......
title 2  TEST 2
.....
回复

使用道具 举报

15#
 楼主| 发表于 2011-4-27 14:01:51 | 只看该作者

回复 #14 zhaohj 的帖子

谢谢指点,我已按你说的进行了测试,一但加了gfxmenu /grub4dos/message语句且将菜单变为utf-8编码的菜单后,checkrange 0:2 calc %user% || configfile (md)4+8句就执行不正常。
回复

使用道具 举报

16#
发表于 2011-4-27 15:01:42 | 只看该作者
terminal console
color white/blue blue/yellow light-red/blue 10
set /p user=please input 0-2 (other return main menu):
checkrange 0:2 calc %user% || configfile (md)4+8
default %user%
timeout 50
gfxmenu /test/message

title 0  TEST 0
......
title 1  TEST 1
......
title 2  TEST 2
......


================
简单一点,在菜单中加一条:
title 3  return main menu
configfile (md)4+8

[ 本帖最后由 zhaohj 于 2011-4-27 15:14 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-25 05:20

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表