Board logo

标题: 关于CALL的问题 [打印本页]

作者: THENEWLIFE     时间: 2008-9-12 20:41    标题: 关于CALL的问题

@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个参数起到什么用
搜索里面看了下,没有很具体.还请高人详细解释下,最好有个简单的例子
作者: huahua0919     时间: 2008-9-12 21:28

@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

作者: THENEWLIFE     时间: 2008-9-12 22:11
::将前两个参数拿出来传递
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 ]
作者: chenall     时间: 2008-9-15 01:37
这里的
call :test %1 %2
其实也就是将脚本执行时的前两个参数直接转给:test段.