当前位置: 首页 > news >正文

bat goto 还是 call

  1. goto

    • 说明

      • goto指令指定程序下一步执行的位置;
      • C语言的goto差不多; 因为bat没有函数的概念, 可以在整个bat文件中任意跳转;
      • label的定义和C语言略有差异;
    • 案例

      int main() {
       int a = 0;
       label:
         if (a < 10) {
           ++a;
           goto label;
         }
       return 0;
      }
      
      set /a a=0
      :label
      
      if %a% lss 10 (
         set /a a+=1
         goto :label
      )
      
      echo %a%
      
      • 上面两个都差不多, 只是定义和调用的略有差异;
    • 参考

      • microsoft goto
    • 补充

      • goto :EOFreturn类似;即推出当前程序;
      • label定义是一行都是, 可以包含空格, 但是不能包括;=之类的;
      • label的定义尽量避免二义性;可以前面加空格, :只能一个, 多了就变成注释了.
      • goto结合if可以实现bat没有的while循环;
      • goto不仅仅往回跳,也可以往下跳;
  2. call

    • 简介

      • call调用其他程序;或指令; 其后的被当作是新的环境中执行;
      • 类比函数调用;
      • bat和汇编的执行很像;

    • 格式

      • call [drive:][path]<filename> [<batchparameters>] [:<label> [<arguments>]]
      • [drive:][path]<filename>文件名, 指调用某个bat文件.batchparameters表示输入参数
      • :<label>标记点, 表示开启一个函数,从这个点开始执行;当然也会继承当前的环境变量;
      • [drive:][path]<filename> 的优先级大于[:<label> [<arguments>]].
    • 注意

    • 案例

      call :function_label
      
      :function_label
      setlocal
      
      echo good
      
      endlocal && exit /b 0
      
      • 这个的执行结果是;
      good
      good
      [Finished in 336ms]
      
      • 原因是从上往下执行, call之后, 继续往下执行;
      call :function_label
      exit /b 0
      
      :function_label
      setlocal
      
      echo good
      
      endlocal && exit /b 0
      
      • 所以需要这种; 执行完推出当前环境;

相关文章:

  • JVM垃圾回收系列之垃圾收集算法
  • 计算机毕业设计选题推荐 40个高质量计算机毕设项目分享【源码+论文】(三)
  • BDD - SpecFlow BDD 测试实践 SpecFlow + MSTest
  • CRM项目记录(四)
  • React组件的生命周期函数
  • FFmpeg源码分析:avformat_open_input()打开媒体流
  • 深入理解关键字 一(auto,register,static,sizeof)
  • 基于Springboot+vue的停车场管理系统(Java毕业设计)
  • 详解CAN总线:CAN总线报文格式—数据帧
  • mysql进阶:canal实现mysql数据同步到redis|实现自定义canal客户端
  • React路由三种渲染方式、withRouter高阶组件、自定义导航组件
  • FaceNet-pytorch(fixing data imbalance-CASIA)
  • 【内核的设计与实现笔记】| 【01】初步了解内核
  • 【HDLBits 刷题】所有答案直达链接汇总
  • portswigger 目录遍历文件上传
  • Android开源项目规范总结
  • Debian下无root权限使用Python访问Oracle
  • Gradle 5.0 正式版发布
  • interface和setter,getter
  • java小心机(3)| 浅析finalize()
  • js中的正则表达式入门
  • python3 使用 asyncio 代替线程
  • ReactNativeweexDeviceOne对比
  • sublime配置文件
  • 高度不固定时垂直居中
  • 将 Measurements 和 Units 应用到物理学
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 如何解决微信端直接跳WAP端
  • 新版博客前端前瞻
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 字符串匹配基础上
  • Semaphore
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • #laravel 通过手动安装依赖PHPExcel#
  • $.ajax,axios,fetch三种ajax请求的区别
  • (9)目标检测_SSD的原理
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (Git) gitignore基础使用
  • (python)数据结构---字典
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET命名规范和开发约定
  • []error LNK2001: unresolved external symbol _m
  • [2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
  • [AIGC codze] Kafka 的 rebalance 机制
  • [AR Foundation] 人脸检测的流程
  • [bug总结]: Feign调用GET请求找不到请求体实体类
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子
  • [C#]C#学习笔记-CIL和动态程序集