goto命令,跳转命令。
基本语法
1 2 3 4 5
| goto label rem some cmd
:label rem cmd of lable
|
跳转到标签行,并继续执行之后的语句。标签必须以:
开头作为标签的指示。
标签名只可以使用常量,而不能使用变量。
条件 if或switch/case
condition using goto1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| set /p a=choose:
if "%a%" == "A" goto CaseA if "%a%" == "B" goto CaseB if "%a%" == "C" goto CaseC goto default
:CaseA echo "execute A" echo a=%a% goto end
:CaseB echo "execute B" goto end
:CaseC echo "execute C" goto end
:default echo "nothing execute" :end
|
注意:CaseA
之后,如果不加goto end
则会继续执行:CaseB
之后的语句。
循环 Loop
loop using goto cmd1 2 3 4 5 6 7
| @echo off set index=0 set max=5 :loop set /a index+=1 echo %index% if %index% neq %max% goto loop
|
相当于
loop using for1 2 3 4
| set init=0 set step=1 set max=5 for /L %%i in (%init%,%step%,%max%) do echo %%i
|
不过使用goto更加灵活,理论上for能实现的循环goto都能实现。
dead loop
goto :EOF
直接跳转到文件结尾。
Reference:
help goto1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 将 cmd.exe 定向到批处理程序中带标签的行。
GOTO label
label 指定批处理程序中用作标签的文字字符串。
标签必须单独一行,并且以冒号打头。
如果命令扩展被启用,GOTO 会如下改变:
GOTO 命令现在接受目标标签 :EOF,这个标签将控制转移到当前 批脚本文件的结尾。不定义就退出批脚本文件,这是一个容易的 办法。有关能使该功能有用的 CALL 命令的扩展描述,请键入 CALL /?。
|