- ·上一篇文章:读取源文件内容并输出至其他文件时保留空行的方法
- ·下一篇文章:二进制判断奇偶的批处理代码
- ·百度中搜索更多的关于“call和goto的异同点”相关内容
- ·谷歌中搜索更多的关于“call和goto的异同点”相关内容
- ******申明******
- 本站文章内容有部分为收录网络中其他网友内容,DOS资源站不保证所有的代码都适合你使用。
- 由于编辑匆忙,有可能造成某些脚本文件出现丢失代码或代码无法运行的情况,请网友根据情况自行修改。
- 如果能将出错部分反馈给我,那就更好了。
call和goto的异同点
@echo off&title DOS资源站 www.cmdos.net
echo 早上好!
goto :noon
echo 该睡觉了!&pause>nul
:noon
echo 中午好!
:night
echo 晚上好!
pause>nul
执行结果:
Quote:
早上好!
中午好!
晚上好!
[按任意键退出]
@echo off
echo 早上好!
call :noon
echo 该睡觉了!&pause>nul
:noon
echo 中午好!
:night
echo 晚上好!
pause>nul
执行结果:
Quote:
早上好!
中午好!
晚上好!
[按任意键]
该睡觉了!
[按任意键]
中午好!
晚上好!
[按任意键退出]
从上边两个例子我们已经可以很明白的看出call和goto的异同点了:
相同点:call和goto都可以将流程跳转到标签处。
不同点:goto将流程跳转到标签处后,程序从标签处开始执行到结束,整个流程执行完毕;call将流程跳转到标签处后,程序从标签处开始执行到结束[1],然后会跳转回执行call的下一条语句,直到整个流程执行完毕;所以call并不会像goto那样打乱了流程,它只是中断了当前流程,但仍保证整个流程按原顺序进行。
[1]在第二个例子中我们可以在标签后适当的地方调用goto :eof,使流程提前结束,提前将流程转移call的下一条语句:
@echo off
echo 早上好!
call :noon
echo 该睡觉了!&pause>nul
:noon
echo 中午好!
goto :eof
:night
echo 晚上好!
goto :eof
pause>nul
执行结果已和例二有所不同,先显示:
Quote:
早上好!
中午好!
该睡觉了!
按任意键后接着显示"中午好!",到goto :eof后退出!
很显然,如果在例一中加入goto :eof则只是提前结束了流程。

