无忧启动论坛

标题: 请教grub4dos的checkrange命令 [打印本页]

作者: qj_tzy    时间: 2011-4-26 15:05
标题: 请教grub4dos的checkrange命令
请教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 编辑 ]
作者: zxw    时间: 2011-4-26 15:06
checkrange 1:5 calc %temp% || configfile /grub4dos/menu.lst
作者: qj_tzy    时间: 2011-4-26 15:40
标题: 回复 #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 编辑 ]
作者: zxw    时间: 2011-4-26 16:02
标题: 回复 #3 qj_tzy 的帖子
信息太少,无法奉告。
作者: qj_tzy    时间: 2011-4-26 16:15
标题: 回复 #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 编辑 ]
作者: zxw    时间: 2011-4-26 16:18
标题: 回复 #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
作者: qj_tzy    时间: 2011-4-26 16:28
标题: 回复 #6 zxw 的帖子
以下两句的前后位置不影响checkrange命令的执行结果,此前我已试过。
timeout 10
default 1
作者: sratlf    时间: 2011-4-26 17:03
最好不要在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" ....
.......
作者: zhaohj    时间: 2011-4-26 17:54
确实,utf-8编码的lst会使命令无效。已上报此bug

[ 本帖最后由 zhaohj 于 2011-4-26 18:06 编辑 ]
作者: chenall    时间: 2011-4-26 18:57
我简单试了一下没有发现异常...

请详细报告.

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

另外请使用最新版的GRUB4DOS测试
作者: qj_tzy    时间: 2011-4-26 21:34
标题: 回复 #8 sratlf 的帖子
谢谢指点,我将按您指点的思路,重新修改我的菜单。
作者: qj_tzy    时间: 2011-4-26 21:37
标题: 回复 #10 chenall 的帖子
我在上面测试时,已使用2011-4-16的grub4dos。
作者: qj_tzy    时间: 2011-4-27 09:04
标题: 回复 #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 编辑 ]
作者: zhaohj    时间: 2011-4-27 10:33
我测试了一下也正常,不过没加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
.....
作者: qj_tzy    时间: 2011-4-27 14:01
标题: 回复 #14 zhaohj 的帖子
谢谢指点,我已按你说的进行了测试,一但加了gfxmenu /grub4dos/message语句且将菜单变为utf-8编码的菜单后,checkrange 0:2 calc %user% || configfile (md)4+8句就执行不正常。
作者: zhaohj    时间: 2011-4-27 15:01
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 编辑 ]




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3