在批处理程序中可以调用外部可运行程序,比如:exe程序,也可调用其他批处理程序。但是不够方便,如果被调用的程序很多,就显得不够简明了,很繁琐。
在 Windows XP 中,批处理可以调用本程序中的一个程序段,相当于子程序,这些子程序一般放在主程序后面。
子程序调用格式:call :label arguments
子程序语法:
:label command1 command2 ...... commandn goto :eof
【注意】
在子程序段中,参数 %0 指标签 :label。
子过程一般放在最后,并且注意在主程序最后要加上 exit 或 跳转语句,避免错误的进入子过程。
子程序和主程序中的变量都是全局变量,其作用范围都是整个批处理程序。
传至子程序的参数在 call 语句中指定,在子程序中用 %1、%2 至 %9 的形式调用,而子程序返回主程序的数据只需在调用结束后直接引用就可以了,当然也可以指定返回变量。
实例:定义一个子程序,然后在主程序中调用它。代码如下:
@echo off rem 定义主程序段 :main echo main start... rem 输出空行 echo. rem 调动子程序 call :sub echo. echo main finished... pause exit rem 定义一个子程序 :sub echo. echo sub start.... ping 127.0.0.1 echo sub finished goto :eof
实例:定义一个子程序,向子程序传递参数。子程序则把传递的参数放入到变量中。
@echo off call :sub return 你好 echo 子程序返回值:%return% pause exit :sub set %1=%2 goto :eof
实例:要求用户输入一个大于1的数字,然后使用子程序计算 1,2,3,4,.....n 的总和,其中:n为用户输入的数字。如下:
@echo off set sum=0 set count=1 set /p maxValue=输入一个数字: rem 调用子程序 call :sub sum %maxValue% echo 数据求和结果:%sum% pause exit rem 子程序 :sub set /a %1=%1+%count% if %count% leq %2 ( set /a count=%count%+1 goto sub ) goto :eof