无忧启动论坛

标题: goto %CONFIG% 为什么转不到:%CONFIG%? [打印本页]

作者: hzdjzx    时间: 2009-7-19 17:03
标题: goto %CONFIG% 为什么转不到:%CONFIG%?
goto %CONFIG% 为什么转不到:%CONFIG%?

CONFIG.SYS内容:

[menu]
menuitem=UMBPCI
menuitem=HIMEM
menuitem=EMM386
menudefault=UMBPCI,30
menucolor=7,1
[UMBPCI]
[HIMEM]
[EMM386]
[COMMON]


AUTOEXEC.BAT内容:

GOTO %CONFIG%
:%CONFIG%
type test.txt
goto end
:END

如CONFIG.SYS选UMBPCI,上面的autoexec.bat运行后提示
a:\>GOTO UMBPCI
Label not found


高手请指教。
作者: gmy    时间: 2009-7-19 17:41
我的方法是,另外起个LABEL,如 if "%config%"=="UMBPCI" goto umbpci1
作者: lummox    时间: 2009-7-19 18:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: hzdjzx    时间: 2009-7-20 01:34
首先谢谢你们的指点。
都指教了可行的办法。

还请指教:
处理段名不能用批处理系统变量%CONFIG% ,可以用自定变量吗?
不管%CONFIG%指代的是UMBPCI或者HIMEM或者EMM386,接下来的代码完全一样。如果能用变量当段名,就不用那么多除了段名不一样,代码完全一样的段了。如果不能用变量当段名,这种情况还有什么办法可以精简代码?
作者: NicTense    时间: 2009-7-21 01:25
原帖由 hzdjzx 于 2009-7-20 01:34 发表
首先谢谢你们的指点。
都指教了可行的办法。

还请指教:
处理段名不能用批处理系统变量%CONFIG% ,可以用自定变量吗?
不管%CONFIG%指代的是UMBPCI或者HIMEM或者EMM386,接下来的代码完全一样。如果能用变 ...


应该是不行的吧,段名的变量好像是不会被执行值替换的

不过你的具体问题,三段代码一样很容易解决

if "%config%"=="UMBPCI" goto deault
if "%config%"=="HIMEM" goto deault
if "%config%"=="EMM386" goto deault
...(其他值对应的转向处理)

:default
xxx
xxx
作者: hzdjzx    时间: 2009-7-21 02:15
谢谢了,你们的指导。让我明白系统变量当段名根本就是错误,并且指明了实现跳转的各种方法。
作者: hzdjzx    时间: 2009-7-23 02:02
汗~~~~~~~
发现更简单的是加个NOT,然后随便输入一个不存在的段名

CONFIG.SYS内容:
[menu]
menuitem=UMBPCI
menuitem=HIMEM
menuitem=EMM386
menudefault=UMBPCI,30
menucolor=7,1
[UMBPCI]
[HIMEM]
[EMM386]
[COMMON]

AUTOEXEC.BAT内容:

if not "%config%"=="hahaha" goto deault
:default
作者: NicTense    时间: 2009-7-23 03:13
原帖由 hzdjzx 于 2009-7-23 02:02 发表
汗~~~~~~~
发现更简单的是加个NOT,然后随便输入一个不存在的段名

CONFIG.SYS内容:
[menu]
menuitem=UMBPCI
menuitem=HIMEM
menuitem=EMM386
menudefault=UMBPCI,30
menucolor=7,1

[HIMEM]
[EMM ...



只是告诉你方法

如果针对你的实际问题

你总共就只有3项,3项对应代码都一样

实际上你根本不用管 %config%

直接写你的代码就行了
作者: hzdjzx    时间: 2009-7-23 04:55
标题: 回复 #8 NicTense 的帖子
哈哈,谢谢仁兄,把我引回正途。
其实我不是应用,是学习。
如你所说,直接写,就是最简单的。原已发现这样最好。可能有些走火入魔,非要在那里加东西去实现,竟然丢了真理。当看到你的回复,呆了三秒。
作者: laozhao    时间: 2009-7-23 07:40
如果要执行同样的代码,三个label放一起即可。
goto %config%

:UMBPCI
:HIMEM
:EMM386
  执行语句

作者: laozhao    时间: 2009-7-23 07:44
3楼的兄弟写的代码其实有点问题,每个分支都忘了加个跳转的,不然上面分支就会渗透到下面去了。

GOTO %CONFIG%

:UMBPCI
    语句
    goto NEXT
:HIMEM
    语句
    goto NEXT
:EMM386
    语句
    goto NEXT

:NEXT
    .....




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