bat 脚本之 for 循环

目录

1、基本语法

2、循环查找文件

 3、读取文件内容

3.1、 整个文件读取

3.2、选择跳过行读取


1、基本语法

echo test
@echo off

for %%a in (A B C) do echo %%a

pause

表示 for 循环打开括号中变量或者字符串,赋值给 %%a ,do 后面跟命令行或者变量。以上输出:(@echo off 表示后面关闭 echo 输入显示,直接给结果,简洁)

F:\workspace>echo test
test
A
B
C

这里就是循环打印 A B C,安照空格、逗号、跳格来分割文字。所以等同于下面:

echo test
@echo off

for %%a in (A
B
C) do echo %%a

for %%a in (A,B,C) do echo %%a

pause

2、循环查找文件

echo test
@echo off

for %%a in (*.txt) do echo %%a

pause

这样表示在当前目录下,查找所有 txt 文件。如果需要递归查找当前目录下所有文件夹内的txt文件,需要加 /r

echo test
@echo off

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

pause

分别输出:

F:\workspace\test>echo test
test
1.txt

F:\workspace\test>echo test
test
F:\workspace\test\1.txt
F:\workspace\test\qwe\22.txt

 3、读取文件内容

读取文件内容需要使用 for /f , /f 这个就是打开文件的,我们来查看下 1.txt 内容

#1.txt 内容

11 22 33 44
AA BB CC DD

3.1、 整个文件读取

echo test
@echo off

for /f %%a in (1.txt) do echo %%a

pause

输出如下 

F:\workspace\test>echo test
test
11
AA

 这里按照换行输出的,默认按空格分割,取每行第一个,需要全部输出就得指定分割方式,或者把所有分割内容打印,如下:

echo test
@echo off

for /f "delims=" %%a in (1.txt) do echo %%a

pause

这里 "delims=" 表示不分割了,或者加上 tokens 指令输出几个分割,如下

echo test
@echo off

for /f "tokens=1,* delims= " %%a in (1.txt) do echo %%a %%b

pause

表示分割后,输出每行第一个到*(最后)一个。这里后面要加上两个变量,且要是连续的,按照 a-z 的顺序。以上两种效果一样,打印如下

F:\workspace\test>echo test
test
11 22 33 44
AA BB CC DD

 

3.2、选择跳过行读取

echo test
@echo off

for /f "eol=1 tokens=1,* delims= " %%a in (1.txt) do echo %%a %%b

pause

eol=1 表示跳过1开头的行,注意只能写一个,不能写 11 这样的

echo test
@echo off

for /f "skip=1 tokens=1,* delims= " %%a in (1.txt) do echo %%a %%b

pause

skip=1 表示跳过开头一行,从第二行开始读取。

 

 

  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值