博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【批处理】goto 用法举例
阅读量:6119 次
发布时间:2019-06-21

本文共 2013 字,大约阅读时间需要 6 分钟。

hot3.png

goto

  指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。

  语法:goto label (label是参数,指定所要转向的批处理程序中的行)

  行用 :label 表示

  举例

@echo off:startclsset /p numis=请输入数字1或2:if /i "%numis%"=="1" goto 1if /i "%numis%"=="2" (goto 2) else (echo 输入有误!&&pause>nul&&goto start):1echo 你输入的是1pause>nul&&goto start:2echo 你输入的是2pause>nul&&goto start

:eof 是批处理中唯一可以省去标签行的一种特定标签,表示整个代码的结尾处,因此当你把这句用在结尾处,当然和没用它是一样的,其它位置则显然作用就不一样。

可能大家在看教程或者代码时,总是难免会碰到 goto :eof 这样一句代码,大家都知道,goto 就是跳转到的意思,goto 后面跟着的是标签,也就是用 : 定义的标签,但,一般见到的 goto 后面的标签都是没有 : 这个的,怎么这里却使用了呢?

而找遍所有代码都没发现有 :eof 或者 eof 的踪影,怎么这里能正常使用而不出错呢?

其实,:eof 是内置标签,所以,我们就可以不用定义而去使用它了 

那么它又有什么用呢?

据我所知,它有两个作用,在不同的位置,有不同的作用

1、在主程序中使用 goto :eof

主程序,就是指 批文件 的主要部分,(大家都知道,批文件有主程序和子程序之分)如果是在主程序的最后使用 goto :eof ,那它的作用就是 退出批处理并关闭cmd窗口,这个没什么难理解的,作用相当于 exit(也不一定要在主程序最后,在主程序的任何位置使用 goto :eof 都是结束批文件并关闭cmd窗口)

2、在子程序中使用 goto :eof

上面说到了,批处理有主程序和子程序,子程序就是指,用 call 调用的部分,如

@echo off 

echo 欢迎来到 

call :deepin 

pause 

goto :eof 

:deepin 

echo 深度软件分坛批处理技术讨论区 

goto :eof

上面这个例子,主程序是指

@echo off 

echo 欢迎来到 

call :deepin 

pause 

goto :eof

最后使用了 goto :eof ,因为是在主程序的最后使用,所以,它的作用就是退出批处理并关闭cmd窗口

下面的

:deepin 

echo 深度软件分坛批处理技术讨论区 

goto :eof

就可以说是这个批文件的子程序了,由主程序中的 call 调用,最下面,也用到了 goto :eof ,那么它的作用又是什么,是否跟上面的一样呢?

肯定不一样啦,如果一样,还要说吗?呵呵……

它的作用就是:结束当前子程序并把控制权交还给调用它的主程序以便主程序继续执行下面的命令(我晕,这句乍就这么拗口)

啥意思呢?

看上面例子,结束子程序,就是结束 由 deepin 定义的子程序,如上面的 echo 深度软件分坛批处理技术讨论区 

把控制权交还给调用它的主程序,就是哪个调用它就把它还给哪个,好让它继续执行下面的代码

如果上面例子,就是返回到 call :deepin 这一句,然后继续执行下面的 pause以及接下来的代码

其实,说白了,就是执行完了这个子程序后就回到调用它的主程序然后继续执行它下面的代码

明白了没呢

主程序、子程序,都是相对而言的,没有一个明确的界定

如:

@echo off 

echo 欢迎来到 

call :deepin 

pause 

goto :eof 

:deepin 

echo 深度软件分坛 

call :bat 

goto :eof 

:bat 

echo 批处理技术讨论区 

goto :eof

:deepin 

echo 深度软件分坛 

call :bat 

goto :eof

是 

@echo off 

echo 欢迎来到 

call :deepin 

pause 

goto :eof

的子程序,而

:bat 

echo 批处理技术讨论区 

goto :eof

又是

:deepin 

echo 深度软件分坛 

call :bat 

goto :eof

的子程序

所以说,主或子都是不一定的,主程序,同时也可以是其它主程序的子程序,而子程序又可以是其它子程序的主程序,所以,主程序跟子程序都是相对的概念,并没有明确的界定标准

在用 call 调用子程序时,在子程序的最后一定要加上 goto :eof 让它返回到 call 那里,不然,批处理会继续执行下去,也就达不到实际的效果了

注:如果子程序的下面没有代码了,那加不加都是一样的

转载于:https://my.oschina.net/u/199776/blog/350524

你可能感兴趣的文章
mysql的innodb中事务日志(redo log)ib_logfile
查看>>
部署SSL证书后,网页内容造成页面错误提示的处理办法
查看>>
MS SQLSERVER通用存储过程分页
查看>>
60.使用Azure AI 自定义视觉服务实现物品识别Demo
查看>>
Oracle 冷备份
查看>>
jq漂亮实用的select,select选中后,显示对应内容
查看>>
C 函数sscanf()的用法
查看>>
python模块之hashlib: md5和sha算法
查看>>
linux系统安装的引导镜像制作流程分享
查看>>
解决ros建***能登录不能访问内网远程桌面的问题
查看>>
pfsense锁住自己
查看>>
vsftpd 相关总结
查看>>
bash complete -C command
查看>>
解决zabbix 3.0中1151端口不能运行问题
查看>>
售前工程师的成长---一个老员工的经验之谈
查看>>
Get到的优秀博客网址
查看>>
dubbo
查看>>
【Git入门之四】操作项目
查看>>
老男孩教育每日一题-第107天-简述你对***的理解,常见的有哪几种?
查看>>
Python学习--time
查看>>