在批处理脚本中,call 命令用来从一个批处理脚本中调用另一个批处理脚本。
C:\Users\Administrator\Desktop\demo> CALL /? 从批处理程序调用另一个批处理程序。 CALL [drive:][path]filename [batch-parameters] batch-parameters 指定批处理程序所需的命令行信息。 如果命令扩展被启用,CALL 会如下改变: CALL 命令现在将卷标当作 CALL 的目标接受。语法是: CALL:label arguments 一个新的批文件上下文由指定的参数所创建,控制在卷标被指定 后传递到语句。你必须通过达到批脚本文件末两次来 "exit" 两次。 第一次读到文件末时,控制会回到 CALL 语句的紧后面。第二次 会退出批脚本。键入 GOTO /?,参看 GOTO :EOF 扩展的描述, 此描述允许你从一个批脚本返回。 另外,批脚本文本参数参照(%0、%1、等等)已如下改变: 批脚本里的 %* 指出所有的参数(如 %1 %2 %3 %4 %5 ...) 批参数(%n)的替代已被增强。你可以使用以下语法: %~1 - 删除引号("),扩展 %1 %~f1 - 将 %1 扩展到一个完全合格的路径名 %~d1 - 仅将 %1 扩展到一个驱动器号 %~p1 - 仅将 %1 扩展到一个路径 %~n1 - 仅将 %1 扩展到一个文件名 %~x1 - 仅将 %1 扩展到一个文件扩展名 %~s1 - 扩展的路径只含有短名 %~a1 - 将 %1 扩展到文件属性 %~t1 - 将 %1 扩展到文件的日期/时间 %~z1 - 将 %1 扩展到文件的大小 %~$PATH:1 - 查找列在 PATH 环境变量的目录,并将 %1 扩展到找到的第一个完全合格的名称。如果 环境变量名未被定义,或者没有找到文件, 此修改符会扩展到空字符串 可以组合修改符来取得多重结果: %~dp1 - 只将 %1 扩展到驱动器号和路径 %~nx1 - 只将 %1 扩展到文件名和扩展名 %~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1, 并扩展到找到的第一个文件的驱动器号和路径。 %~ftza1 - 将 %1 扩展到类似 DIR 的输出行。 在上面的例子中,%1 和 PATH 可以被其他有效数值替换。 %~ 语法被一个有效参数号码终止。%~ 修定符不能跟 %* 使用
(1)演示通过 call 命令在 demo1.bat 脚本中调用另一个脚本 demo2.bat,如下:
demo1.bat
@echo off echo demo1.bat REM 调用 demo2.bat 脚本,并且传递两个参数,分别为 arg1、arg2 call demo2.bat arg1 arg2 pause
demo2.bat
@echo off echo demo2.bat REM 获取通过 call 调用该脚本传递的参数 echo %1 echo %2
运行脚本,输出如下:
demo1.bat demo2.bat arg1 arg2 请按任意键继续. . .
注意:%0 表示脚本自身的名称,如果将 echo %0 添加到 demo2.bat 中,输出的是 demo2.bat 的名称。