谈起goto,相信大家应该想到的是面向过程编程。其实,这就相当于当有人向你谈起class,意味着你就懂得面向对象编程。如果你不懂,那么你们的沟通将会很困难。不懂我说的啥意思吗?请参见曾经分享王路的一篇文章《永远不要对一个外行聊你的专业》

  一般常规的批处理命令,按照自上而下的顺序逐行执行,也就是说,只有第一行命令执行之后,才可能执行第二行,第二行执行之后,才可以执行到第三行.....如此依次执行。那么,如果对于不同的情况,需要执行不同的既定操作,常规的执行规则显然是无法完成任务的,这种应用场景下怎么办呢?我们就需要引入流程跳转的概念,即就是动用流程跳转语句goto了。流程跳转的含义:改变默认的执行顺序,强制跳转到指定的位置执行特定的程序块。

  为什么要把goto和冒号这两个命令联合起来介绍?因为它们是分不开的,无论少了哪个或多了哪个都会出错。goto是个跳转命令,紧跟其之后的是标签名;冒号是一个标签标志,紧跟其之后的是标签名,两者合称标签。当程序运行到goto时,将自动跳转到冒号定义的部分去执行(呵呵~试想一下,是不是分不开?)。goto语句与标签一一呼应,在实现流程跳转时相辅相成,缺一不可。

  使用goto语句注意事项:

  1. 一一对应。goto语句与标签要相互对应。不允许只有goto语句而没有相应的标签段,否则,程序将找不到相应的标签段而直接退出;只有标签段而没有goto语句是允许的,但不能实现流程跳转功能,从代码精简的角度来看,有标签段而没有goto语句,则此标签是多余的,大可精剪。

  2. 多个标签。若有多个标签段,则需要注意标签段之间是否需要添加恰当的退出语句来终止程序继续向下执行,这是很多新手很容易犯错的地方,需要谨慎。

  3. 标签名只可以使用常量,而不能使用变量;

  举例如下:新建一个文本文件,命名为goto,修改文件类型为bat,用Notepad++打开文件,编辑内容如下:

 1 @echo off
 2 set /p input=请输入字母A或B:
 3 if "%input%"=="A" goto A
 4 if "%input%"=="B" goto B
 5 pause
 6 exit
 7
 8 :A
 9 echo 您输入的字母是A
10 pause
11 exit
12
13 :B
14 echo 您输入的字母是B
15 pause
16 exit 

  执行结果如下:

  示例分析:

  如果去掉标签:A 和 :B之间的exit语句,那么,当输入字母A之后,结果将同时显示“您输入的字母是A”和“您输入的字母是B”这两行内容,而保留exit语句将只会在显示“您输入的字母是A”后,按任意键推出批处理程序。因为批处理是自上而下逐行执行的,即使用goto语句跳转之后,在新的位置上,这一执行规则仍然会保持,直至碰到另一个流程跳转语句,执行过程并不会在两个标签段之间自动终止。还不理解?

  新建一个文本文件,命名为goto1,修改文件类型为bat,用Notepad++打开文件,编辑内容如下:

 1 @echo off
 2 set /p input=请输入字母A或B:
 3 if "%input%"=="A" goto A
 4 if "%input%"=="B" goto B
 5 pause
 6 exit
 7
 8 :A
 9 echo 您输入的字母是A
10 pause
11
12 :B
13 echo 您输入的字母是B
14 pause
15 exit

  执行结果如下:

  

Good  Good  Study, Day  Day  Up.

顺序   选择  循环  总结

转载于:https://www.cnblogs.com/Braveliu/p/5077868.html

批处理命令——goto 和 :相关推荐

  1. 批处理命令goto的使用

    批处理命令goto的使用 @echo off set /p input=请输入字母A或B: if "%input%"=="A" goto A if " ...

  2. cmd批处理命令大全1

    cmd和批处理命令大全 1.Echo 命令 打开回显或关闭请求回显功能,或显示消息.如果没有任何参数,echo 命令将显示当前回显设置. 语法 echo [{on|off}] [message] Sa ...

  3. 批处理命令 / rem :: :

    @time 2019-07-08 @author Ruo_Xiao 1.rem (1)批处理命令,相当于把 rem 后面的内容清空. (2)必须单独设置为一行,同样受回显的困扰,需要使用 @echo ...

  4. cmd批处理命令与变量(下)

    批处理命令与变量 1:for命令及变量 基本格式: FOR /参数 %variable IN (set) DO command [command_parameters] %variable:指定一个单 ...

  5. Windows批处理命令学习

    Windows批处理命令学习一 Windows的批处理命令固然比不上unix的shell脚本强大,但用好了仍能给我们的工作带来很大作用.一个朋友问我为什么学习批处理命令,我以<程序员修炼之道-- ...

  6. .bat批处理命令的介绍

    HUC = = D组 http://www.cnhonkerarmy.com/ 63707869 =====================================开始============ ...

  7. windows批处理命令教程

    原文地址:http://www.cnblogs.com/phyllis/archive/2011/05/19/2051131.html 第一章 批处理基础 第一节 常用批处理内部命令简介 批处理定义: ...

  8. 批处理命令和常用脚本

    之前在我的文章中有介绍过常用的"操作系统命令",当时就有很多人私信我能不能讲讲"批处理脚本",那么今天我就以本篇文章内容给大家介绍一下"批处理脚本的编 ...

  9. 复习DOS及批处理命令

    ECHO命令 ECHO命令是大家都熟悉的DOS批处理命令的一条子命令,但它的一些功能和用法也许你并不是全都知道,不信 你瞧: 1.   作为控制批处理命令在执行时是否显示命令行自身的开关 格式:ECH ...

最新文章

  1. Windows Server 2008 R2 配置笔记,密码设置为任意长度,远程桌面终端连接数的设置...
  2. AC日记——积木大赛 洛谷 P1969
  3. 一起来看流星雨剧情简介/剧情介绍/剧情分集介绍第三十五集
  4. idea persistence生成_真厉害!竟然可以这样用IDEA通过数据库生成lombok版的POJO...
  5. 【PC工具】chrome插件: Github 项目代码树形格式展示工具octotree
  6. Spring/Spring Boot微服务项目 集成Druid 实现监控功能
  7. 备份mysql数据库以及文件--脚本
  8. 读写分离,读写分离死锁解决方案,事务发布死锁解决方案,发布订阅死锁解决方案|事务(进程 ID *)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务...
  9. 芝麻信用分750以上有什么特殊作用?
  10. JAVA 网络编程 Socket 详细说明,实现客户端和服务端相互推送消息
  11. redis info信息注解
  12. Linux:UDP Socket编程(代码实战)
  13. 神坛上的插画师真的高薪且自由吗?
  14. 游戏建模中3DMAX里面的【烘焙规范】大盘点
  15. X509证书结构及解析
  16. php集成square功能(使用square/connect)
  17. 软件测试基础概念(二)测试环
  18. “神棍节”背后的故事
  19. 再见python你好julia_再见,Python2。你好,Python3
  20. 解锁图案-九宫格有多少种组合?安全吗?用程序来解答

热门文章

  1. Linux导入ora-39070,impdp 导入数据报ORA-39002,ORA-39070,ORA-39002, ORA-39087
  2. java 穷举 排列组合,JavaScript递归穷举所有排列组合并找出重复值
  3. java 汇率使用的数据类型_Flink计算支持的数据类型
  4. python 查找文件内容性能 grep_使用grep查找文件中指定字符出现的次数
  5. c语言 真假条件跳转语句,什么是无条件跳转语句(C++)
  6. python入门必备10个坑_适合 Python 初学者的一些技巧和坑
  7. mysql read only参数_MySQL 参数解析 tx_read_only transaction_read_only
  8. html5 微格式,HTML5抢鲜:微格式及相关的属性名称。
  9. mysql right join实例_mysql left join,right join,inner join简单实例
  10. mongodb线程池_常用高并发网络线程模型设计及MongoDB线程模型优化实践