从另一个批处理程序调用一个批处理程序,而不停止父批处理程序。 调用命令接受标签作为调用的目标。

注释

调用在脚本或批处理文件外部使用时,在命令提示符处不起作用。

语法

call [drive:][path]<filename> [<batchparameters>]] 
call [:<label> [<arguments>]]

参数

参数 DESCRIPTION
[<drive>:][<path>]<filename> 指定要调用的批处理程序的位置和名称。 参数 <filename> 是必需的,并且必须具有 .bat 或.cmd扩展。
<batchparameters> 指定批处理程序所需的任何命令行信息。
:<label> 指定希望批处理程序控件跳转到的标签。
<arguments> 指定要从开头传递到批处理程序 :<label>的新实例的命令行信息。
/? 在命令提示符下显示帮助。

Batch 参数

批处理脚本参数引用(%0%1,...)列在下表中。

%*使用批处理脚本中的值是指所有参数(例如, %1%2%3...)。

可以将以下可选语法用作批处理参数的替换(%n):

Batch 参数 DESCRIPTION
%~1 展开 %1 并删除周围的引号。
%~f1 %1 扩展到完全限定的路径。
%~d1 仅将 %1 展开到驱动器号。
%~p1 仅将 %1 展开到路径。
%~n1 仅将 %1 展开为文件名。
%~x1 仅将 %1 扩展为文件扩展名。
%~s1 %1 扩展到仅包含短名称的完全限定路径。
%~a1 %1 展开到文件属性。
%~t1 %1 扩展到文件的日期和时间。
%~z1 %1 扩展到文件大小。
%~$PATH:1 搜索 PATH 环境变量中列出的目录,并将 %1 展开到找到的第一个目录的完全限定名称。 如果未定义环境变量名称或搜索找不到文件,则此修饰符将展开为空字符串。

下表显示了如何将修饰符与复合结果的批处理参数组合在一起:

带修饰符的 Batch 参数 DESCRIPTION
%~dp1 仅将 %1 扩展到驱动器号和路径。
%~nx1 仅将 %1 扩展到文件名和扩展名。
%~dp$PATH:1 在 PATH 环境变量中列出的目录搜索 %1,然后展开到找到的第一个目录的驱动器号和路径。
%~ftza1 展开 %1 以显示类似于 dir 命令的输出。

在上面的示例中, %1 和 PATH 可以替换为其他有效值。 语法 %~ 由有效参数编号终止。 %~修饰符不能与 %*.

注解

  • 使用批处理参数:

    批处理参数可以包含可以传递给批处理程序的任何信息,包括命令行选项、文件名、通过 %9%0 批处理参数以及变量(例如 ,%baud%)。

  • <label>使用参数:

    通过对<label>参数使用调用,可以创建新的批处理文件上下文,并将控件传递到指定标签之后的语句。 第一次遇到批处理文件的末尾(即跳转到标签后),控件在 调用 语句后返回到语句。 第二次遇到批处理文件的末尾时,将退出批处理脚本。

  • 使用管道和重定向符号:

    请勿在调用中使用管道(|)或重定向符号(<或)。>

  • 进行递归调用

    可以创建调用自身的批处理程序。 但是,必须提供退出条件。 否则,父批处理和子批处理程序可以无限循环。

  • 使用命令扩展

    如果启用了命令扩展, 则调用 接受 <label> 为调用的目标。 正确的语法为 call :<label> <arguments>.

例子

若要从另一个批处理程序运行 checknew.bat 程序,请在父批处理程序中键入以下命令:

call checknew

如果父批处理程序接受两个批处理参数,并且希望它将这些参数传递给 checknew.bat,请在父批处理程序中键入以下命令:

call checknew %1 %2