曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3041|回复: 0
打印 上一主题 下一主题

[语法] 子程序

[复制链接]

716

主题

734

帖子

2946

积分

超级版主

Rank: 9Rank: 9Rank: 9

积分
2946
跳转到指定楼层
楼主
发表于 2014-5-12 20:24:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
子程序语法:
: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 标签。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-19 00:05 , Processed in 0.074326 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表