入门命令5-流程跳转:goto

goto 的意思非常好理解,即跳转,来看看官方解释:

C:\Documents and Settings\doupi>goto /?
将 cmd.exe 导向到批处理程序中带标签的行。
GOTO label
label 指定批处理程序中用作标签的文字字符串。
标签必须单独一行,并且以冒号打头。

goto label 即跳转到哪个分支块执行,这是一种常见的程序分支结构.具体我们来看两个例子:

例1:打印1到10

1 @echo off 
2 :start
3 rem set 的/a 参数就是让set 可以支持数学符号进行加减等一些数学运算,它的作用很多,后面介绍
4 set /a var+=1
5 echo %var%
6 rem 还记得上一篇中的if的用法吗,比较数值
7 if %var% lss 10 goto start
8 pause >nul

例2:按判断条件作跳转

 1 @echo off 
2 set /p input=请输入字母A或者B:
3 if "%input%"=="A" goto labelA
4 if "%input%"=="B" goto labelB
5 echo 输入不正确
6 pause>nul
7 exit
8 :labelA
9 rem 当输入了字母A时,就已经从第三行开始跳转到第7行执行了.
10 echo 输入了字母A
11 pause >nul
12 exit
13 :labelB
14 echo 输入了字母B
15 pause >nul
16 exit

这里唠叨一句:批处理及shell,实际上是一堆命令写在一起,它们会一行一行的执行.自上而下.对于goto及配套label的用法,请注意以下几点:

1. label是一个标签,以冒号开关,最好用易识别的字符串常量来标识(不能用变量)

2. goto在执行到的后面紧跟的标签时,会去全文件查找,执行第一个被找到的标签(所以请不要弄几个同名标签,此类做法比较二,后果自已去总结)

3. 标签执行完成后如果不被终止或者跳转的话,程序仍会向下继续执行.你可以理解:标签实际就是个标识作用,它没有真正意义上的把程序分块(不像各个括号的作用).

4. 标签可以被当作注释来用,但它是被执行了,标准的注释用的是::或者rem

5. 当你看到goto :eof时,不要惊讶, eof=end of file, :eof是一个固定通用标签,它表示跳到该文件的末行.(但如果程序是执行在call中时,它是跳出call,这方面用法,后面实例研究吧.)

 

OK,此篇完结.



posted @ 2011-12-10 12:12  doupip  阅读(4438)  评论(0编辑  收藏  举报