目录
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
F:\workspace\test>echo test
test
F:\workspace\test\
F:\workspace\test\qwe\
3、读取文件内容
读取文件内容需要使用 for /f , /f 这个就是打开文件的,我们来查看下 内容
# 内容
11 22 33 44
AA BB CC DD
3.1、 整个文件读取
echo test
@echo off
for /f %%a in () do echo %%a
pause
输出如下
F:\workspace\test>echo test
test
11
AA
这里按照换行输出的,默认按空格分割,取每行第一个,需要全部输出就得指定分割方式,或者把所有分割内容打印,如下:
echo test
@echo off
for /f "delims=" %%a in () do echo %%a
pause
这里 "delims=" 表示不分割了,或者加上 tokens 指令输出几个分割,如下
echo test
@echo off
for /f "tokens=1,* delims= " %%a in () 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 () do echo %%a %%b
pause
eol=1 表示跳过1开头的行,注意只能写一个,不能写 11 这样的
echo test
@echo off
for /f "skip=1 tokens=1,* delims= " %%a in () do echo %%a %%b
pause
skip=1 表示跳过开头一行,从第二行开始读取。