Batch批处理中是没有while语句的,for循环使用起来又有点复杂,那么如何来进行简单的循环操作呢,这一节我们一起来看看。
我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。
简单介绍
-
标签
标签是一个定位符,一个锚点,类似于前端中的anchor,用来做为跳转的目的地。Batch批处理中用冒号加上名字来表示,例如:label1
,:loop
等 -
goto
用来跳转到标签的命令,例如goto :label1
,goto :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循环都可以干哪些事情。