在bat批量处理命令中 代码单行以冒号+数字 “:1” ":2"开头 有什么作用呢?

@Echo Off
:1
Set /p str=《青玉案·元夕》作者是谁?
If not %str%==辛弃疾 echo 错误 & goto 1
If %str%==辛弃疾 echo 正确
:2
Set /p str=《红楼梦》前80回的作者是谁?
If not %str%==曹雪芹 echo 错误 & goto 2
If %str%==曹雪芹 echo 正确
Pause>Nul

为什么"goto 1" 就执行命令 “Set /p str=《青玉案·元夕》作者是谁”, "goto 2" 就执行 “Set /p str=《红楼梦》前80回的作者是谁”这条命令?不太理解

批处理中允许以“:XXX”来构建一个标号,然后用GOTO XXX跳转到标号:XXX处,然后执行标号后的命令。所以在语句中当if条件满足时,用goto语句实现跳转到标号为1 处,继续往下执行,第二段判断同理。在批处理中用于标记的冒号后面只能跟字母数字,如后面跟其他非字母数字,那就是注释了,如::,:+等。具体你可以参考这些命令的用法。https://www.cnblogs.com/lizm166/p/11132601.html

批处理中冒号:是跳转标记,结合goto使用,可以作为if跳转,或者循环跳转使用