bat 脚本之 使用函数

摘自:https://blog.csdn.net/peng_cao/article/details/73999076

  • 综述
  • bat函数写法
  • bat函数调用
  • bat函数返回值

综述

Windows bat脚本是一种解释性的脚本语言,可以拿到做很多事情。对于稍简单的问题:比如通过注册表判断下档期机器的语言啊,国家啊,安装了那些软件啊等等还少诶简单。但是如果有可能使用bat脚本来处理较复杂的问题时,就需要用函数来将其模块化,方便bat脚本的阅读和编写。下面来介绍下bat 函数的用法

bat函数写法

如下是一个最简单的函数写法;以:func开始以goto:eof结束。:funcgoto:eof之间的为函数内容,例如这里的echo this is a bat func

:func
echo this is a bat func
goto:eof

bat函数调用

写好了bat函数之后,我们需要调用它。如下代码片段展示了如何在bat脚本中调用函数。其实很简单,就这一句call:func即可。

call:func
pause
:func
echo this is a bat func
goto:eof

bat函数返回值

目前我了解到的bat函数返回值的获取有如下两种方法:

  • 使用参数带回
  • 使用全局变量带回

这里直接贴上关于bat函数的各种条件的验证代码

参数作为输出参数时,注意:

  1. ::注: 参数作为输出参数时,函数内不要使用SETLOCAL和ENDLOCAL
  2. ::注: 参数作为输出参数时,此文件不要设置setlocal enabledelayedexpansion
echo off
color 0d
echo bat Function example
echo =================================
echo ==========Func No paramter ======
echo =================================
echo before call myFuncNoPara
call:myFuncNoPara
echo after call myFuncNoPara
echo =================================
echo ===========Func has paramter=====
echo =================================
echo before call myFuncHasPara
call:myFuncHasPara 123 abc
echo after call myFuncHasPara
echo =================================
echo =======Func with return value====
echo =================================
set return=123
set returnPara=321
echo return:%return%
echo returnPara:%returnPara%
echo befora call myFuncReturnValue
call:myFuncReturnValue returnPara abc
echo after call myFuncReturnValue
echo return:%return%
echo returnPara:%returnPara%
goto:eofpause
:myFuncNoPara
echo myFuncNoPara enter
echo myFuncNoPara First para:%1
echo myFuncNoPara Second para:%2
echo myFuncNoPara Third para:%3
echo myFuncNoPara exit
goto:eof:myFuncHasPara
echo myFuncHasPara enter
echo myFuncHasPara First para:%1
echo myFuncHasPara Second para:%2
echo myFuncHasPara Third para:%3
echo myFuncHasPara exit
goto:eof:myFuncReturnValue_returncannot_be_set
SETLOCAL
echo myFuncReturnValue
echo myFuncReturnValue First para:%1
echo myFuncReturnValue Second para:%2
set "%~1=%2%"
set return=%2
ENDLOCAL:myFuncReturnValue
::SETLOCAL
echo myFuncReturnValue
echo myFuncReturnValue First para:%1
echo myFuncReturnValue Second para:%2
set "%~1=%2%"
set return=%2
::ENDLOCAL
goto:eof

运行效果图

转载于:https://www.cnblogs.com/LiuYanYGZ/p/11254598.html

bat函数调用 带返回值相关推荐

  1. 定义一个带参带返回值的方法,实现输出随机数数组

    public class mains { public static void main(String[] args) { // 创建对象,对象名为hello mains hello = new ma ...

  2. C++中内存分配、函数调用和返回值问题

    在谈述函数调用和返回值问题之前,先来看看C++中内存分配的问题. C++编译器将计算机内存分为代码区和数据区,很显然,代码区就是存放程序代码,而数据区则是存放程序编译和执行过程出现的变量和常量.数据区 ...

  3. Java05-day05【方法(概述、调用过程图解)、带参方法、带返回值方法、重载、方法参数传递(基本类型、引用类型)】

    java零基础入门到精通(2019版)[黑马程序员] 视频+资料:[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] &qu ...

  4. android cursor 实例化,为什么Cursor放到带参数带返回值方法里就报错?

    完整代码如下: 其中有大部分的代码被注释,那是可以成功运行的. 后来我想啊,游戏有好多种,但是需要统计的内容是一样的. 我就想传参 然后获得返回值的方式 来减少代码量啊. 但是把相关的查询代码放到 带 ...

  5. 实验3.1 简单实现Intent带返回值的跳转

    在这里实现的功能是当点击listview的某一子项是,启动一个确认删除相应记录的子Activity. 所以用到了带返回值的intent 父界面和子界面的前台代码 activity_main <? ...

  6. Mysql带返回值与不带返回值的2种存储过程

    过程1:带返回值: 1 drop procedure if exists proc_addNum; 2 create procedure proc_addNum (in x int,in y int, ...

  7. 浅谈C++中内存分配、函数调用和返回值问题

    在谈述函数调用和返回值问题之前,先来看看C++中内存分配的问题. C++编译器将计算机内存分为代码区和数据区,很显然,代码区就是存放程序代码,而数据区则是存放程序编译和执行过程出现的变量和常量.数据区 ...

  8. c++中带返回值函数没写return能通过编译但运行时会出现奇怪问题

    c++中带返回值函数没写return能通过编译但运行时会出现奇怪问题 例如: string myFunc(){ theLogics(); } 发现调用: myFunc(); 崩溃. 但调用: cout ...

  9. Java手写线程池(不带返回值、带返回值)

    文章目录 不带返回值 带返回值 不带返回值 public class MyThreadPool {private static final int DEFAULT_THREAD_NUM = 10;pr ...

最新文章

  1. 学习笔记53—Wilcoxon检验和Mann-whitney检验的区别
  2. 深度优先(DFS)和广度优先(BFS)
  3. idea双击无反应,打不开的解决方法,两种情况。
  4. 以效率为根本,网易慢跑要做“另类”的TO B业务
  5. iis php 0x80070032,访问网站时 HTTP 错误 404.17 - Internet Information Services | Microsoft Docs...
  6. mycat 从入门到放弃 (转)
  7. python自动化办公 51cto_聊聊 Python 办公自动化之一 Excel
  8. Django—自定义分页
  9. js金额千分位显示_JavaScript 格式化数字、金额、千分位、保留几位小数
  10. 华为经典面试题(敲黑板!!!)
  11. 解决Windows不在第一分区时变色龙引导问题
  12. matlab二元非线性拟合,求助matlab多元非线性公式拟合
  13. 单片机c语言中断意义,51单片机中断系统的重要性
  14. STM32CubeMX+ETH+DP83848+Lwip 成功ping通(基于stm32F107开发板)
  15. 2022年安全员-B证考试试题模拟考试平台操作
  16. Codeforces869A The Artful Expedient
  17. [arduino][u8g2][12864] oled—u8g2库使用说明(例子是12864液晶屏)
  18. 天清江月白,心静海鸥知 (4.26每周总结)
  19. el-table设置表格高度无效
  20. 为什么通证经济会变得越来越普及?

热门文章

  1. mysql 批量替换 所有表_[收藏]批量替换一个数据库中所有表中所有记录
  2. python转二进制字符串_python如何将二进制串(UTF-8)转换为字符串?
  3. Java中的Unsafe
  4. LeetCode算法入门- Compare Version Numbers -day14
  5. 状态反射在体育运动中的作用_体育运动木地板时刻运行在最佳状态的秘诀
  6. python求出五位数的回文数_python之递归
  7. python聊天软件实现_python实现点对点聊天程序
  8. 没有足够的值_元丰通宝值多少钱吗?市场价值如何?有没有足够的收藏空间?...
  9. semantic ui中文文档_Vuetify-广受欢迎的Material风格的开源UI框架
  10. 【升职加薪必备架构图】Springboot学习路线汇总