当前位置:网站首页 / bat / 正文

[AY-Bat]写给自己的Bat笔记-for循环[4]

时间:2015年11月10日 | 作者 : aaronyang | 分类 : bat | 浏览: 1274次 | 评论 0

2015年11月10日      ======= AYUI www.ayjs.net AY 杨洋原创编写,请不要转载谢谢=========

FOR命令讲解

参数:

/F 分块提取文件

/D 显示当前目录下所有指定的目录名称

/R  枚举文件和目录

/L 计次循环
子参数:tokens()、delims(分块标志)、eol(忽略行)、skip(跳过行)、userbackq(支持长路径名)


CMD窗口中:

for %I in (数组或者字符串,可以多个) do 循环体


批处理中:

for %%I in (数组或者字符串,可以多个) do 循环体


do和in之间的里面的括号不能少的,%i   的字母会区分大小写,随便哪个字母,但是不要%0~%9的

2015年11月10日      ======= AYUI www.ayjs.net AY 杨洋原创编写,请不要转载谢谢=========


第一个简单的demo

新建bat2.bat

@echo off
for %%i in (www.ayjs.net) do echo %%i
pause

blob.png



参数讲解

首先准备一个read.txt,然后修改bat2.bat代码

blob.png

ay的*第十一次*我很疑问
bat教程*学习*我很疑问
在*看啥呢*我很疑问
ayjs.net*的网站上
@echo off
for /f "tokens=1 delims=*" %%i in (read.txt) do (
echo %%i)
pause

for循环后面跟了个/f 代表分快处理,然后空格,跟了个双引号,里面是子参数

tokens=1代表每行分块后第一个,delims=* 代表每行按照*号分块

然后后面的变量我不说了,很容易懂

效果如下:

blob.png


demo2     取每行前2个块

@echo off
for /f "tokens=1,2 delims=*" %%i in (read.txt) do (
echo %%i*%%j) 
pause

这里%%j名字随便取的,在这里被莫名的赋值了

效果如下

blob.png


demo3

继续修改文本

ay的*第十一次*我很疑问*第一行很幸福*福
bat教程*学习*我很疑问*第二行很幸福*二福*二福28
在*看啥呢*我很疑问*第三行很幸福*三福
ayjs.net*的网站上

然后for

@echo off
for /f "tokens=1-3 delims=*" %%i in (read.txt) do (
echo %%i---%%j---%%k) 
pause

blob.png

这里1-3代表一个范围 ,好比正则中的      [Abcd...z]  也可以携程[a-z]


demo4

@echo off
for /f "tokens=2,3,* delims=*" %%i in (read.txt) do (
echo %%i---%%j---%%k) 
pause

blob.png

这里2,3,* 代表 第二块和第三块,然后后面的不分块,就是后面的。

2015年11月10日      ======= AYUI www.ayjs.net AY 杨洋原创编写,请不要转载谢谢=========


demo5 

eol忽略指定符号开头的行,修改文本

ay的*第十一次*我很疑问*第一行很幸福*福
bat教程*学习*我很疑问*第二行很幸福*二福*二福28
在*看啥呢*我很疑问*第三行很幸福*三福
!测试感叹号开头
ayjs.net*的网站上
@echo off
for /f "eol=! tokens=*" %%a in (read.txt) do (
echo %%a
)
pause

token=* 代表所有

效果图,发现感叹号那行被忽略了

blob.png


demo6

skip跳过前N行,这里等于3,代表跳过前三行

@echo off
for /f "skip=3 tokens=*" %%a in (read.txt) do (
echo %%a
)
pause

blob.png



下面讲解下 /d参数的使用

/D 显示当前目录下所有指定的目录名称

demo7

新建bat3.bat

@echo off
for /d %%a in (pro*,*log) do (
echo %%a
)
pause

然后拷贝放在c盘根目录,这里我指定pro开头的文件夹和log结尾的文件夹

blob.png



/R  枚举文件和目录

demo8

新建bat4.bat 枚举指定目录下的*.tmp的文件,这里tmp应该是临时文件

for /r %systemroot% %%a in (*.tmp) do (
echo %%a
)

blob.png

然后执行bat,效果如下

blob.png

它把C:\windows目录下的tmp后缀名的文件都枚举出来了。


/l 代表进入循环

这里/l 参数时候代表进入了循环模式,类似C#的for循环了

demo9

set i=0
for /l %%a in (1,1,100) do (
set /a i+=1
)
echo 结算结果:%i%

这里/l的时候    in后面必须3个参数(起始值,每次增长,最大值)

set /a的用法

blob.png

blob.png

这里使用了/a 就可以使用 +=运算符了。

效果图:

blob.png



userbackq(支持长路径名)

长路径名比如,下面2个中间有空格

blob.png

比如如果不加这个子参数,那么这个含有长路径名的下的文件就无法正确解析,也就是如果你的in后面的路径含有长路径,加上这个参数就行了

例如

demo10

for /f "usebackq" %%a in ("C:\Program Files\ayjs.txt") do (
echo %%a
)



demo11 for循环增强模式

例如: 如果bat放在c盘根目录,就是枚举C盘下所有的txt文件

for /r %%i in (*.txt) do (
echo %%~fi
)

可以通过查看for /?   然后大约按了5次回车找到了。

blob.png

运行后效果图:

blob.png

这里我c盘的txt文件太多了,但是你发现了,这里的路径全是   全路径的了,这就是~fi的效果,具体的可以自己随便再试试


2015年11月10日      ======= AYUI       www.ayjs.net      AY         杨洋原创编写,请不要转载谢谢=========


推荐您阅读更多有关于“bat批处理,”的文章

猜你喜欢

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  查看权限

合肥科大智能常年招聘.NET,Java,Web前端,有想找想换工作的私聊我AY唯一QQ:875556003和AY交流

抖音号:wpfui,可以看到我的很多作品效果

AYUI8社区版Github地址:前往获取

作者:杨洋(AaronYang简称AY,安徽六安人)目前是个人,还没公司AY唯一QQ:875556003和AY交流

高中学历,2015年1月17日开始,兴趣学习研究WPF,目前工作繁忙,不接任何活

声明:AYUI7个人与商用免费,源码可购买。部分DEMO不免费.AY主要靠卖技术服务挣钱

不是从我处购买的ayui7源码,我不提供任何技术服务,如果你举报从哪里买的,我可以帮你转正为我的客户,并送demo

查看捐赠

AYUI7.X MVC教程 更新如下:

第一课 第二课 程序加密教程

vs2015 企业版密钥HM6NR-QXX7C-DFW2Y-8B82K-WTYJV

vs2017 企业版密钥NJVYC-BMHX2-G77MM-4XJMR-6Q8QF

标签列表