Board logo

标题: 求 goto :eof结合call的用法 [打印本页]

作者: ieutk     时间: 2007-5-26 13:17    标题: 求 goto :eof结合call的用法

如题:请教各位高手啦!
作者: bjsh     时间: 2007-5-26 14:07


请把问题描述清楚

[ Last edited by bjsh on 2007-5-26 at 02:09 PM ]
作者: ansipeter     时间: 2007-5-26 15:18
小生不才,粗略解释一下:

     在2000及其以上系统,P处理语句GOTO新增了:EOF系统标签,意思是移动到当前P处理文件的结尾,EOF==END OF FILE的缩写,意为文件结尾,主要表现形式为:
GOTO :EOF
OR
GOTO:EOF


      CALL语句也有了新加功能,CALL语句除了可以调用应用程序及P处理文件外,还可以调用P处理文件的标签,这个很像是编程中的子过程调用具体,主要表现为:

CALL 路径\程序名称
CALL 路径\P处理文件名
CALL :LABLE 参数

楼主所提到的是CALL语句和GOTO语句的结合用法,实例如下:
@echo off&setlocal
for %%a in (hello;world;good;feel;thankyou) do call :ansi %%a 这句是用CALL语句调用:ANSI标签,并将%%a的值做为第一个参数传递给指定的标签
echo Finish!!!
goto:eof
:ansi
echo %1
goto:eof  注意:这里使用goto:eof 语句是为了返回FOR语句继续执行,如果echo %1这句语句是文件的最后一条一句那么goto:eof可有可无,如果后面还有其他语句,那必须要用goto:eof语句返回才可以。

作者: ieutk     时间: 2007-5-26 19:29


  Quote:
Originally posted by ansipeter at 2007-5-26 03:18 PM:
小生不才,粗略解释一下:

     在2000及其以上系统,P处理语句GOTO新增了:EOF系统标签,意思是移动到当前P处理文件的结尾,EOF==END OF FILE的缩写,意 ...

非常感谢兄的回答,我要的就是这个,老是搞不清楚call调用子标签时里的goto :eof 是什么意思,现在明白啦,再次感谢!


再者,如你所说,ansi标签里的goto :eof是为返回for语句,那么,主程序里的最后一行的那个goto :eof我可不可以理解为退出程序呢!
作者: oilio     时间: 2007-6-24 10:19
不错,我以前也不太懂,现在懂一些这样的用法了。谢谢!
作者: b102588     时间: 2007-8-8 15:12
恩 有点了解了
作者: knoppix7     时间: 2007-8-10 08:06
这个在某些时候很好用。
比如可以通过call+goto :eof避开延迟扩展。
作者: Jansky     时间: 2007-10-15 14:06
谢谢,豁然开朗了!!!!!!!
作者: huahua0919     时间: 2007-11-26 10:34
eof 是系统自定义的;  ?
作者: junyee     时间: 2007-11-26 10:48
以前老以为goto:eof就是退出。。。
原来还有这样的用法啊???
作者: hlowd     时间: 2007-12-10 21:28
不错 清楚了
作者: moniuming     时间: 2008-1-17 23:49
好东西,写的注释太有用了!
作者: baijuyihaha     时间: 2008-1-18 21:08    标题: 求教setlocal

setlocal是干什么的?好象不加也行
作者: baijuyihaha     时间: 2008-1-18 21:11    标题: 求教echo %1

为什么必须是echo %1 ?
作者: wanqiming     时间: 2008-2-10 21:43    标题: good

good
作者: pinghu     时间: 2008-2-10 22:04
在子程序末尾使用goto :eof表示返回调用他的命令结束位置
在for 语句中使用goto :eof表示不执行本次循环后面的指令,继续下一循环,但不会跳出for语句
既不在子程序中也不在for语句里,goto :eof表示文件结束
鄙人不才只知道这些
作者: wxcute     时间: 2008-2-12 08:28
::在标签内部要用:goto:eof或goto :eof,
::在外部可用:goto:eof或goto :eof或goto eof。
作者: bowen666     时间: 2008-5-15 14:08
多谢多谢,学习了
作者: 21336721     时间: 2008-5-15 16:59
学习了,谢谢3楼的解答
作者: Auto     时间: 2008-5-15 17:50
基本知道了...
作者: luckydds     时间: 2011-1-14 14:45


  Quote:
Originally posted by ieutk at 2007-5-26 19:29:



非常感谢兄的回答,我要的就是这个,老是搞不清楚call调用子标签时里的goto :eof 是什么意思,现在明白啦,再次感谢!


再者,如你所说,ans ...

那个就是执行完了那个for循环以后 再一个echo finish!!! 之后就跳到批处理的尾部,直接退出批处理,不会再执行一遍后边的 ansi 标签了。
作者: zaixinxiangnian     时间: 2011-1-15 00:04
后面的%1  不明白