for 续4

---------siwuxie095

   

   

   

(四)tokens=x,y,m-n 显示指定的列

   

tokens=x 只显示第 x

tokens=x,y,z 只显示第 xyz

tokens=m-n 只显示从 m 列到 n 列(m<n

tokens=* 显示文本中的所有内容(此时,不管有没有用 delims 定义分隔符或定义了多少分隔符,文本的所有内容包括所有符号都会被显示出来)

   

   

如:将 《易经 · 乾》 的开头,保存为 易经.txt,文本内容:

   

   

代码:

@echo off

rem token 1 2 之间的逗号必须为英文格式下的逗号

rem delims = 后的冒号和 易经.txt 保持一致,为中文冒号

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

pause>nul

   

sublime中:

   

   

运行一览:以冒号为分隔符,显示第一列和第二列内容,冒号不显示

   

   

   

   

注意格式细节:

1、"tokens=1,2" 12 数字之间,用的逗号必须是英文格式逗号

2、这里需要显示两列的内容,echo 后面就需要用多个变量符号 %%a

%%b,同样,如果需要显示三列内容,就必须这么写

echo %%a %%b %%c

   

echo %%a %%b %%c

   

3、for /f "tokens=1,2 delims=:" %%a in (易经.txt) do echo %%a %%b

对于 in 前面用 %%a,则 echo 后面就必须以 %%a 变量开始,而且,后面的

变量必须以字母表顺序排列下去,否则无效

   

   

再如:

@echo off

rem token 1 3 之间的逗号必须为英文格式下的逗号

rem delims = 后的逗号和 易经.txt 保持一致,为中文逗号

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

pause>nul

   

sublime中:

   

   

运行一览:以逗号为分隔符,显示第一列和第三列的内容(其余

内容忽略),有些行没有第三列,就不显示

   

   

   

   

使用多个不同符号都作为分隔符:

@echo off

rem token 1 3 之间的逗号必须为英文格式下的逗号

rem delims = 后的冒号、逗号和 易经.txt 保持一致,为中文格式

for /f "tokens=1,3 delims=:," %%a in (易经.txt) do echo %%a %%b

pause>nul

   

sublime中:

   

   

运行一览:以冒号和引号作为分隔符,只显示第一列和第三列的内容,

作为分隔符的冒号和逗号以及其它内容都不予显示

   

   

   

   

再如:

@echo off

rem delims = 后的冒号、逗号和 易经.txt 保持一致,为中文格式

for /f "delims=:," %%a in (易经.txt) do echo %%a

pause>nul

   

运行一览:虽然用多个符号将文本分成更多的列,

但显示时没有指出显示哪些列,将只显示第一小

节(列)的内容

   

   

   

   

   

   

对于 "delims=:," 这个句子,已有冒号和逗号两个符号,当然

还可以添加任意多的符号都作为分隔符,例如 "delims=,。?;"

这里有逗号、句号、问号和分号四个符号都作为分隔符。

   

注意:第一个符号前面以及所有符号之间不能有空格,如果要空格

也作为分隔符,那么空格必须写在所有符号的最后面,当然,也可

以单独将空格作为分隔符 "delims= "

   

   

如:文本 静夜思.txt 的内容:

   

   

Delims=, 即定义逗号为分隔符,以此将诗句分成四个小列(或小节)

   

  

第一列

分隔符

第二列

分隔符

第三列

分隔符

第四列

第一行

床前明月光

疑是地上霜

举头望明月

低头思故乡

   

   

要用 for 将四句诗都显示到屏幕上,不需要任何参数即能实现:

@echo off

for /f %%i in (静夜思.txt) do echo %%i

pause>nul

   

运行一览:

   

   

   

   

如果没有任何参数的语句:

for /f %%i in (filename) do echo %%i

会忽略掉所有行的前导空格后将全部文本内容都显示出来

   

   

再如:将 易经.txt 改为:

   

   

代码:

@echo off

for /f %%e in (易经.txt) do echo %%e

pause>nul

   

运行一览:

   

   

   

若改为:

@echo off

for /f "tokens=1,3" %%e in (易经.txt) do echo %%e %%f

pause>nul

   

运行一览:

   

   

   

   

这里没有使用 delim 进行分隔,而带有空格的行,空格后面的内容被忽

略了,原因就是默认情况下,即使没有用 delims 选项,for 也会以空格

作为分隔符,将空格后的内容屏蔽掉

   

   

使用 delims 的目的主要是通过切分字符串,获得可编辑的字符串

以便于进行下一步编辑

   

Delims 好比一把刀,文本信息就好比猪扒,使用 delims 这把刀将

文本这块猪扒切分成许多小块,这样吃起来就很方便

 

如果你想吃其中的某一块,直接用 tokens 这把刀叉提取即可

   

   

【made by siwuxie095】

  

原文地址:https://www.cnblogs.com/siwuxie095/p/6372251.html