常规的Bat批处理命令是按照自上而下的顺序逐行执行的,第一行命令执行之后,才能执行第二行,第二行命令执行后,才能执行第三行…以此类推,但有时候我们需要根据不同的条件,改变命令默认的自上而下的执行顺序,这就需要用到跳转命令goto了。

goto命令,将 cmd.exe 定向到批处理程序中带标签的行。

**语法格式:**GOTO label

label 指定批处理程序中用作标签的文字字符串。标签必须单独一行,并且以冒号打头。

注意事项:

  • goto命令与标签是一一对应的,一个goto对应一个标签,只有goto没有标签,批处理脚本运行到goto就直接退出了,有标签没有goto命令,这个标签的命令行永远无法执行。
  • 多个标签的情况下,注意是否需要在标签间添加退出语句来终止脚本继续向下执行。
  • 标签名只能是常量,不能是变量

实例:根据输入字母A或B显示对应的信息

@echo off
set /p input=请输入字母A或B:
if "%input%"=="A" goto A
if "%input%"=="B" goto B
echo 您没有输入字母或者输入的不是A或B
PAUSE 
exit

REM 定义标签A
:A
echo Apple
PAUSE 
exit

REM 定义标签B
:B
echo Banana
PAUSE
exit

运行结果:

exit意思是退出,第一个exit和:A标签后面的exit都不能省略,如果省略,脚本运行就会出现问题,假如输入的字母不是A或B,执行“echo 您没有输入字母或者输入的不是A或B”,按任意键继续后,会执行:A标签里的命令,同理:A标签后面删掉exit后,:A标签里的命令执行完,按任意键继续后,并不会退出批处理程序,所以要加上exit来终止程序继续向下执行。

如果标签名重复了,goto只会跳转到对应的第一个标签,后续的重复的标签命令不会执行。

实例:

set /p input=请输入字母A或B:
if "%input%"=="A" goto A
if "%input%"=="B" goto B
echo 您没有输入字母或者输入的不是A或B
PAUSE 
exit

REM 定义标签A
:A
echo Apple
PAUSE 
exit

REM 定义标签B
:A
echo Banana
PAUSE
exit

运行结果:

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐