谈起goto,相信大家应该想到的是面向过程编程。其实,这就相当于当有人向你谈起class,意味着你就懂得面向对象编程。如果你不懂,那么你们的沟通将会很困难。不懂我说的啥意思吗?请参见曾经分享王路的一篇文章《
永远不要对一个外行聊你的专业
》
一般常规的批处理命令,按照自上而下的顺序逐行执行,也就是说,只有第一行命令执行之后,才可能执行第二行,第二行执行之后,才可以执行到第三行.....如此依次执行。那么,如果对于不同的情况,需要执行不同的既定操作,常规的执行规则显然是无法完成任务的,这种应用场景下怎么办呢?我们就需要引入流程跳转的概念,即就是动用流程跳转语句goto了。流程跳转的含义:改变默认的执行顺序,强制跳转到指定的位置执行特定的程序块。
为什么要把goto和冒号这两个命令联合起来介绍?因为它们是分不开的,无论少了哪个或多了哪个都会出错。goto是个跳转命令,紧跟其之后的是标签名;冒号是一个标签标志,紧跟其之后的是标签名,两者合称标签。当程序运行到goto时,将自动跳转到冒号定义的部分去执行(呵呵~试想一下,是不是分不开?)。goto语句与标签一一呼应,在实现流程跳转时相辅相成,缺一不可。
使用goto语句注意事项:
1. 一一对应。goto语句与标签要相互对应。不允许只有goto语句而没有相应的标签段,否则,程序将找不到相应的标签段而直接退出;只有标签段而没有goto语句是允许的,但不能实现流程跳转功能,从代码精简的角度来看,有标签段而没有goto语句,则此标签是多余的,大可精剪。
2. 多个标签。若有多个标签段,则需要注意标签段之间是否需要添加恰当的退出语句来终止程序继续向下执行,这是很多新手很容易犯错的地方,需要谨慎。
3. 标签名只可以使用常量,而不能使用变量;
举例如下:新建一个文本文件,命名为goto,修改文件类型为bat,用Notepad++打开文件,编辑内容如下:
@echo off
set /p input=请输入字母A或B:
if "%input%"=="A" goto A
if "%input%"=="B" goto B
pause
echo 您输入的字母是A
pause
echo 您输入的字母是B
pause
执行结果如下:
示例分析:
如果去掉标签:A 和 :B之间的exit语句,那么,当输入字母A之后,结果将同时显示“您输入的字母是A”和“您输入的字母是B”这两行内容,而保留exit语句将只会在显示“您输入的字母是A”后,按任意键推出批处理程序。因为批处理是自上而下逐行执行的,即使用goto语句跳转之后,在新的位置上,这一执行规则仍然会保持,直至碰到另一个流程跳转语句,执行过程并不会在两个标签段之间自动终止。还不理解?
新建一个文本文件,命名为goto1,修改文件类型为bat,用Notepad++打开文件,编辑内容如下:
@echo off
set /p input=请输入字母A或B:
if "%input%"=="A" goto A
if "%input%"=="B" goto B
pause
echo 您输入的字母是A
pause
echo 您输入的字母是B
pause
执行结果如下:
reprint:https://www.cnblogs.com/Braveliu/p/5077868.html
谈起goto,相信大家应该想到的是面向过程编程。其实,这就相当于当有人向你谈起class,意味着你就懂得面向对象编程。如果你不懂,那么你们的沟通将会很困难。不懂我说的啥意思吗?请参见曾经分享王路的一篇文章《永远不要对一个外行聊你的专业》 一般常规的批处理命令,按照自上而下的顺序逐行执行,也就是说,只有第一行命令执行之后,才可能执行第二行,第二行执行之后,才可以执行到第三行.....如...
bat批处理文件是什么
bat文件是dos下的批处理文件。批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。
在命令提示下输入批处理文件的名称,或者双击该批处理文件,系统就会调用cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们 。
使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。入侵者常常通过批处理文件的编写来实现多工具的组合入侵、自动入侵及结果提取等功能 。
bat命令语法
echo 命令
echo命令用于打开或关闭请求回显,也
我们先来看start, 其实start就是启动,我以前经常用matlab中的system来启动.exe文件,下面我们用start来启动.exe, .bat文件内容如下:
@ echo off
start calc
start calc
start calc 结果,连续启动了三个计算器。
另外,start也可以用来打开一个文件夹,如:
@ echo off