中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-02 16:41
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求 goto :eof结合call的用法 查看 7,322 回复 21
楼 主 求 goto :eof结合call的用法 发表于 2007-05-26 13:17 ·  中国 广东 东莞 电信
初级用户
积分 107
发帖 48
注册 2006-11-30 12:06
19年会员
UID 72174
性别 男
状态 离线
如题:请教各位高手啦!
2 发表于 2007-05-26 14:07 ·  中国 浙江 杭州 华数宽带
银牌会员
★★★
积分 2,000
发帖 621
注册 2007-01-01 00:00
19年会员
UID 75212
性别 男
状态 离线


请把问题描述清楚

[ Last edited by bjsh on 2007-5-26 at 02:09 PM ]
3 发表于 2007-05-26 15:18 ·  中国 北京 联通
中级用户
★★
替身
积分 269
发帖 130
注册 2007-03-23 21:41
19年会员
UID 82683
性别 女
状态 离线
小生不才,粗略解释一下:

在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语句返回才可以。
本帖最近评分记录 (共 3 条) 点击查看详情
评分人分数时间
lxmxn +4 2007-05-26 16:02
ieutk +2 2007-05-26 19:22
oilio +4 2007-06-24 10:18
4 发表于 2007-05-26 19:29 ·  中国 广东 东莞 电信
初级用户
积分 107
发帖 48
注册 2006-11-30 12:06
19年会员
UID 72174
性别 男
状态 离线
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我可不可以理解为退出程序呢!
5 发表于 2007-06-24 10:19 ·  中国 江苏 连云港 联通
高级用户
★★★
前进者
积分 641
发帖 303
注册 2007-01-10 02:57
19年会员
UID 76009
性别 男
状态 离线
不错,我以前也不太懂,现在懂一些这样的用法了。谢谢!
我相信总有一天,总会遇到一个人可以相濡以沫、相吻以湿!
6 发表于 2007-08-08 15:12 ·  中国 浙江 宁波 电信
初级用户
积分 83
发帖 34
注册 2007-04-22 23:47
19年会员
UID 86116
性别 男
状态 离线
恩 有点了解了
快乐崇拜
7 发表于 2007-08-10 08:06 ·  中国 北京 海淀区 联通
银牌会员
★★★
积分 1,287
发帖 634
注册 2007-05-02 15:06
19年会员
UID 87277
性别 男
来自 cmd.exe
状态 离线
这个在某些时候很好用。
比如可以通过call+goto :eof避开延迟扩展。
8 发表于 2007-10-15 14:06 ·  中国 广东 东莞 电信
新手上路
积分 18
发帖 9
注册 2006-03-12 23:38
20年会员
UID 51904
状态 离线
谢谢,豁然开朗了!!!!!!!
9 发表于 2007-11-26 10:34 ·  中国 江苏 苏州 移动
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
18年会员
UID 99089
性别 男
状态 离线
eof 是系统自定义的;  ?
10 发表于 2007-11-26 10:48 ·  中国 江西 吉安 遂川县 电信
中级用户
★★
积分 253
发帖 112
注册 2006-05-31 11:12
20年会员
UID 56308
性别 男
状态 离线
以前老以为goto:eof就是退出。。。
原来还有这样的用法啊???
11 发表于 2007-12-10 21:28 ·  中国 河南 郑州 联通
初级用户
积分 65
发帖 29
注册 2007-11-03 16:16
18年会员
UID 101592
性别 男
状态 离线
不错 清楚了
12 发表于 2008-01-17 23:49 ·  中国 天津 电信
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
好东西,写的注释太有用了!
13 求教setlocal 发表于 2008-01-18 21:08 ·  中国 河北 廊坊 电信
初级用户
积分 36
发帖 17
注册 2007-10-26 16:02
18年会员
UID 100853
性别 男
状态 离线
setlocal是干什么的?好象不加也行
14 求教echo %1 发表于 2008-01-18 21:11 ·  中国 河北 廊坊 电信
初级用户
积分 36
发帖 17
注册 2007-10-26 16:02
18年会员
UID 100853
性别 男
状态 离线
为什么必须是echo %1 ?
15 good 发表于 2008-02-10 21:43 ·  中国 湖南 株洲 电信
新手上路
积分 14
发帖 6
注册 2008-02-08 23:34
18年会员
UID 110366
性别 男
状态 离线
good
论坛跳转: