一、概述 for命令开关有很多,/L,/F,/R。这里仅对含有/F的for进行分析,这个可能是最常用的,也是最强的命令,主要用来处理文件和一些命令的输出结果。
2.参数说明: file代表一个或多个文件,可以使用通配符。
eol=c
- 指定一个行注释字符,遇到c开头的行就忽略掉。 tokens=x,y,m-n -
指每行的哪一个符号被传递到每个迭代 二、详细介绍 第1行第1列第1行第2列第1行第3列 怎么遍历文件中的内容呢?下面的语句可以:
第1行第1列 第1行第2列 第1行第3列 那么for /f %%i in (d:\out.txt) do echo %%i就无法将所有的内容显示出来。显示结果如下: 第1行第1列 因为命令默认是以空格和TAB为分隔符,所以它遇到分割符之后,默认只取第一个,就将分割符后面的都丢掉了。 如果我们还想把每一行再分解更小的内容,该怎么办呢?for命令提供了更多的参数,它们就是:delims和tokens for /f "delims= " %%i in (d:\out.txt) do echo %%i 显示的结果: 第1行第1列 这个命令和for /f %%i in (d:\out.txt) do echo %%i的效果是一样的。
如果我们想要每一行的后面的元素,那又如何呢?这个时候就可以利用tokens参数,它的作用就是当你通过delims将每一行分为更小的元素时,由tokens来控制要取哪一个或哪几个。 for /f "tokens=2 delims= " %%i in (d:\out.txt) do echo %%i 执行结果: 第1行第2列
for /f "tokens=2,3 delims= " %%i in (d:\out.txt) do echo %%i %%j 怎么多出一个%%j? 第1行第2列 第1行第3列
for /f "tokens=2,* delims= " %%i in (d:\out.txt) do echo %%i
%%j 第1行第2列 第1行第3列 用%%i代替第二列,用%%j代替剩余的所有。
skip就是要忽略文件的前多少行,eol用来指定当一行以什么符号开始时,就忽略它。比如: for /f "skip=2 tokens=*" %%i in (d:\out.txt) do echo %%i 第3行第1列 第3行第2列 第3行第3列
再如,当out.txt内容变成: #第1行第1列 第1行第2列 第1行第3列 for /f "eol=# tokens=*" %%i in (d:\out.txt) do echo %%i 结果是: 第3行第1列 第3行第2列 第3行第3列
usebackq就是反转的意思,他把字符串("out.txt")当做文件,或者把命令('command')当做字符串。 例如: for /f "usebackq eol=# tokens=*" %%i in ("d:\out.txt") do echo %%i 结果是: 第3行第1列 第3行第2列 第3行第3列 如果不加usebackq,则"d:\out.txt"会被当成字符串。 又例如: for /f "usebackq tokens=*" %%i in ('echo helloworld!') do echo %%i 结果: echo helloworld,这里命令被当成了字符串。 如果没有usebackq for /f "tokens=*" %%i in ('echo helloworld!') do echo %%i 结果: helloworld! 2.FOR /F ["options"] %%i IN ("string") DO command 例子: for /f "tokens=2,* delims= " %%i in ("this is an example!") do echo %%i %%j 结果: is an example! 对于字符串的处理类似于文件的处理,此处不再赘述。 3.FOR /F ["options"] %%i IN ('command') DO command 该命令将command的执行结果作为集合,后面的处理类似文件处理,此处不再赘述。 转载自:http://blog.sina.com.cn/s/blog_62defbef0101outj.html |
|