作用
CALL
命令可以在批处理执⾏过程中调⽤另⼀个批处理,当另⼀个批处理执⾏完后,再继续执⾏原来的批处理。
CALL command
调⽤⼀条批处理命令,和直接执⾏命令效果⼀样,特殊情况下很有⽤,⽐如变量的多级嵌套。
在批处理编程中,可以根据⼀定条件⽣成命令字符串,⽤ call
可以执⾏该字符串。
CALL [drive:][path]filename [batch-parameters]点击复制复制失败已复制
调⽤的其它批处理程序。
filename
参数必须具有 .bat
或 .cmd
扩展名。
CALL :label arguments点击复制复制失败已复制
调⽤本⽂件内命令段,相当于⼦程序。被调⽤的命令段以标签 :label
开头,以命令 goto :eof
结尾。
批参数:
参数 | 功能 |
%~1 |
删除引号("),扩充 %1 |
%~f1 |
将 %1 扩充到⼀个完全合格的路径名 |
%~d1 |
仅将 %1 扩充到⼀个驱动器号 |
%~p1 |
仅将 %1 扩充到⼀个路径 |
%~n1 |
仅将 %1 扩充到⼀个⽂件名 |
%~x1 |
仅将 %1 扩充到⼀个⽂件扩展名 |
%~s1 |
扩充的路径指含有短名 |
%~a1 |
将 %1 扩充到⽂件属性 |
%~t1 |
将 %1 扩充到⽂件的⽇期/时间 |
%~z1 |
将 %1 扩充到⽂件的⼤⼩ |
%~PATH:1 |
查找列在PATH环境变量的⽬录,并将PATH:1在列在 PATH 环境变量中的⽬录⾥查找 %1, 并扩展到找到的第⼀个⽂件的驱动器号和路径。 |
%~ftza1 |
将 %1 扩展到类似 DIR 的输出⾏。 |
提示
在上⾯的例⼦中, %1
和 PATH
可以被其他有效数值替换。 %~
语法被⼀个有效参数号码终⽌。 %~
修定符不能跟 %*
使⽤。
注意
参数扩充时不理会参数所代表的⽂件是否真实存在,均以当前⽬录进⾏扩展。
示例1
@echo off Echo 产⽣⼀个临时⽂件 > tmp.txt :: 下⾏先保存当前⽬录,再将c:\windows设为当前⽬录 pushd c:\windows Call :sub tmp.txt :: 下⾏恢复前次的当前⽬录 Popd Call :sub tmp.txt pause Del tmp.txt exit :sub Echo 删除引号: %~1 Echo 扩充到路径: %~f1 Echo 扩充到⼀个驱动器号: %~d1 Echo 扩充到⼀个路径: %~p1 Echo 扩充到⼀个⽂件名: %~n1 Echo 扩充到⼀个⽂件扩展名: %~x1 Echo 扩充的路径指含有短名: %~s1 Echo 扩充到⽂件属性: %~a1 Echo 扩充到⽂件的⽇期/时间: %~t1 Echo 扩充到⽂件的⼤⼩: %~z1 Echo 扩展到驱动器号和路径:%~dp1 Echo 扩展到⽂件名和扩展名:%~nx1 Echo 扩展到类似 DIR 的输出⾏:%~ftza1 Echo. Goto :eof点击复制复制失败已复制
示例2
set aa=123456 set cmdstr=echo %aa% call %cmdstr% pause点击复制复制失败已复制
提示
本例中如果不⽤ call
,⽽直接运⾏ %cmdstr%
,将显⽰结果 %aa%
,⽽不是 123456
。