【Batch批处理】利用goto实现while循环效果和实例演示

Batch批处理中是没有while语句的,for循环使用起来又有点复杂,那么如何来进行简单的循环操作呢,这一节我们一起来看看。

我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。

简单介绍

  • 标签
    标签是一个定位符,一个锚点,类似于前端中的anchor,用来做为跳转的目的地。Batch批处理中用冒号加上名字来表示,例如:label1:loop

  • goto
    用来跳转到标签的命令,例如goto :label1goto :loop

利用标签来标志一段循环体的开头,不满足跳出循环的条件就在循环结尾处跳转到标签处,达到循环的目的

使用方法详解

常规使用

下面这个简单的例子是生成从0到9一共10个数字

::iterate 10 times
@echo off
set /a num=0
:loop
echo %num%
set /a num+=1
if %num% lss 10 goto :loop
exit /b

执行效果如下

c:\Batch\test>while_10.bat
0
1
2
3
4
5
6
7
8
9

循环生成随机数

通常情况下不知道循环次数会更适用一些,例如生成范围在[-100,100)的整数,如果是负数就退出循环

::random less than 0
@echo off
:rand
set /a rnd=%random%*200/32768-100
echo %rnd%
if %rnd% geq 0 goto :rand
echo Finally!!
exit /b

执行结果如下

c:\Batch\test>random_100.bat
18
32
28
30
30
-32
Finally!!

这也是我另外一篇讲解随机数博客里面的例子,感兴趣的朋友可以参考 https://blog.csdn.net/Victor2code/article/details/103543056

循环获取用户的输入

也可以和用户进行互动,例如事先直到用户姓名的前提下,用户输入正确的姓名退出循环

::iterate until input correct name
@echo off
set name=xiaofu
:loop
set /p input=Please input your name:
if %input% neq %name% goto :loop
echo Congrats!!
exit /b

执行结果如下

c:\Batch\test>while_set.bat
Please input your name:james
Please input your name:"xiao fu"
Please input your name:xiaofu
Congrats!!

如果字符串中间有空格记得加上双引号

使用场景

如上所示,这种goto加标签的循环方式和while循环一样,适用于不知道具体循环次数的场景

总结

这种类似于while的循环还是很简单的,真正比较难的是批处理中for循环的使用,下一节我们就一起来看一看for循环都可以干哪些事情。

发布了25 篇原创文章 · 获赞 2 · 访问量 1690

猜你喜欢

转载自blog.csdn.net/Victor2code/article/details/103550260