神剑山庄资源网 Design By www.hcban.com
(四)tokens=x,y,m-n 提取列


格式:

FOR /F "tokens=x,y,m-n" %%I IN (Command1) DO Command2

用法:

一句话总结:提取列。

通俗讲,共同提取每一行的第m小节的内容。

因此,可以用该命令来指定提取文本信息。

tokens=有时表示提取全部。

tokens=m表示提取第m列。

tokens=m,n表示提取第m列和第n列。

tokens=m-n表示提取第m列至第n列。

Tokens=*表示删除每行前面的空格。忽略行首的所有空格。

tokens=m*提取第m列以后的所有字符,星号表示剩余的字符。

tokens=m,*提取第m列以后的所有字符,星号表示剩余的字符。

输出变量的个数由定义了的tokens决定。

在 FOR 语句中显式声明 %%i。使用tokens= 隐式声明%%j 和%%k。只要不会引起试图声明高于字母“z”或“Z”的某个变量,则使用tokens= 可以指定最多 26 个输出变量。


接着前面的例子“静夜思”。

如果我要提取第三小节“举头望明月”,如何做到?

@echo off

for /f "delims=, tokens=3" %%i in (静夜思.txt) do echo %%i

pause>nul


讲解:

首先用delims=,表示命令要用逗号作为诗句的分隔符将四句分成四小节。然后用tokens=3提取第三小节,即“举头望明月”了。

delims=和tokens=共用一对双引号,如果单独用双引号,则FOR命令返回的只能是它们之中的一个。因为在第一节说过,FOR是逐一读取命令的,将delims和tokens分开后,FOR只能一次读取一个,不能一次全部读取。


注意:

Tokens常和delims一起使用。

首先,一行内容被delims用分割符号如逗号等分隔成许多小段或小节。

然后,tokens才能提取每行之间对应的这些小段或小节——列。具体看下面例子。


例:提取前面例子文本“a.txt”中每行的第三段内容“ccc”、“kkk”、“ggg”、“考试”。

@echo off

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

pause>nul

注意:为什么kkk不出现呢?


例:如何屏蔽掉文本“a.txt”中的标点符号?

@echo off

for /f "skip=1delims=,, tokens=1-4" %%i in (a.txt) do echo %%i %%j %%k %%l

pause>nul


讲解:

%%i %%j %%k %%l是输出变量,它的个数由tokens后面的(m-n)决定,一般有(n-m+1)个,但不能超过Z。

并且%%后面的字母存在先后顺序,%%a %%b是顺向,倒过来则是逆向的。

代行号的tokens=m*,星号表示m后面的所有剩余的列。

例:

for /f "tokens=*" %%i in (a.txt) do echo %%i

讲解:

没有指定具体的列,"tokens=*"将提取全部列,后面只需一个输出变量%%i。


例:

for /f "tokens=2*" %%i in (a.txt) do echo %%i %%j

讲解:

"tokens=2*"提取第二列以后的所有字符,星号表示剩余的字符。输出变量%%i对应于2的输入变量,%%j对应于星号的输入变量。

注意:

这里没有使用delisms但却以空格分隔了,是因为FOR默认空格是做分隔符的。


例:屏蔽掉“易经.txt”中的标点符号:

@echo off

for /f "tokens=1-5 delims=:," %%a in (易经.txt) do echo %%a %%b %%c %%d %%e

pause>nul

讲解:

当delims定义了两个分隔符“:”和“,”时,提取列要用到tokens。

有五个列,所以tokens要定义提取第一列至第五列,即1-5,相应地,后面需要五个输出显示变量%%a %%b %%c %%d %%e。你也可以这样修改,避免过多的变量符号【补充?】

你也可以将最后多余的句号定义为分隔符“delims=:,。”将其屏蔽掉。


练习:

1、 请简单说说tokens的作用

2、 Tokens=1,3-5后面的输出变量需要多少个?

3、 请使用tokens提取下面网页的标题《硬盘知识及故障大总汇(页 2)》:

手机,3G手机,智能手机,手机电影,手机软件,手机游戏,铃声,主题,图片,电子书,手机维修,手机大全,手机报价,下载,智能手机的测评,使用心得 硬盘知识及故障大总汇(页 2) - 电脑技术交流区 - 3g365智能手机论坛 - powered by Discuz! Archiver.mht

标签:
批处理,FOR,tokens

神剑山庄资源网 Design By www.hcban.com
神剑山庄资源网 免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
神剑山庄资源网 Design By www.hcban.com

评论“批处理 FOR参数/F之tokens详解”

暂无批处理 FOR参数/F之tokens详解的评论...

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。