中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-22 00:40
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于CALL的问题 查看 805 回复 3
楼 主 关于CALL的问题 发表于 2008-09-12 20:41 ·  中国 江西 吉安 电信
初级用户
★★
积分 78
发帖 64
注册 2008-08-29 11:09
17年会员
UID 124464
性别 男
状态 离线
@ECHO OFF
SETLOCAL
IF %1#==# GOTO :EOF
IF NOT %3#==# GOTO BEGIN
SET CMDFILE=%~S0
CALL:TEST %1 %2
GOTO :EOF

:BEGIN
ECHO %*
GOTO :EOF

:TEST
ECHO [%*]
CMD /C%CMDFILE% %* /ADD
GOTO :EOF

帮忙解释下上面的命令,特别是CALL:TEST %1 %2
我对这句的理解是调用TEST 后面的是2个参数 .不知道这2个参数起到什么用
搜索里面看了下,没有很具体.还请高人详细解释下,最好有个简单的例子
2 发表于 2008-09-12 21:28 ·  中国 江苏 苏州 中移铁通
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
18年会员
UID 99089
性别 男
状态 离线

@ECHO OFF
SETLOCAL
::这里的定义好象没有意义,而且用IF来判断最好用双""括起来,不然会有错误
IF %1#==# GOTO :EOF
::这个也是一样可以换成 if not "%3"=""
IF NOT %3#==# GOTO BEGIN
::用短名形式接受当前路径
SET CMDFILE=%~S0
::将前两个参数拿出来传递
CALL:TEST %1 %2
GOTO :EOF

:BEGIN
::显示全部变量
ECHO %*
GOTO :EOF

:TEST
ECHO
CMD /C%CMDFILE% %* /ADD
GOTO :EOF
3 发表于 2008-09-12 22:11 ·  中国 江西 吉安 电信
初级用户
★★
积分 78
发帖 64
注册 2008-08-29 11:09
17年会员
UID 124464
性别 男
状态 离线
::将前两个参数拿出来传递
CALL:TEST %1 %2
是把这2个参数传递给TEST吗.这个有什么意义吗,:TEST
ECHO
CMD /C%CMDFILE% %* /ADD
GOTO :EOF 还是不能很好的理解

能不能帮忙举个简单点的例子.谢谢

[ Last edited by THENEWLIFE on 2008-9-12 at 10:13 PM ]
4 发表于 2008-09-15 01:37 ·  中国 福建 泉州 电信
银牌会员
★★★
积分 1,276
发帖 469
注册 2002-12-23 13:00
23年会员
UID 586
性别 男
来自 福建泉州
状态 离线
这里的
call :test %1 %2
其实也就是将脚本执行时的前两个参数直接转给:test段.
QQ:366840202
http://chenall.net
论坛跳转: