曲径通幽论坛

标题: 子程序 [打印本页]

作者: easy    时间: 2014-5-12 20:24
标题: 子程序
子程序语法:
:lable
comand-1
command-2
...
comand-x
goto :eof

子程序一般放在最后,并且要注意在主程序最后要加上 exit 或跳转语句,避免错误的进入子程序。
子程序和主程序中的变量都是全局变量,其作用范围为整个批处理程序。

示例代码:
  1. @echo off

  2. call :test

  3. echo "back from sub"

  4. pause

  5. :test
  6.        
  7.         echo "In sub"

  8. goto :eof
复制代码

上面给出了调用子程序的格式(实际上还可以接上参数):
CALL :lable arguments

arguments 是传到子程序中的参数,在子程序中用 %1, %2, %3 的形式调用,而子程序返回主程序的数据只需在调用结束后直接引用就可以了,当然也可以指定返回变量,比如:
  1. @echo off

  2. call :test ret "hello world"

  3. echo return from sub : %ret%

  4. pause

  5. :test
  6.        
  7.         set %1=%2

  8. goto :eof
复制代码

输出结果:
B:\>tmp.bat
return from sub : "hello world"
请按任意键继续. . .


子程序返回测试程序2:
  1. @echo off

  2. set sum=0

  3. call :test sum 3 5 8

  4. echo sum : %sum%

  5. pause

  6. :test
  7.        
  8.         set /a %1=%1+%2
  9.         shift /2
  10.         if not "%2"=="" goto test
  11. goto :eof
复制代码

输出结果:
B:\>tmp.bat
sum : 16
请按任意键继续. . .

注意,%0 参数是 :lable 标签。






欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2