bat批处理脚本——for循环中tokens和delims使用详解

tokens和delims都是Windows批处理中for /f命令的重要参数,它们经常一起使用来解析文本和提取特定信息。

tokens

  • 作用:tokens负责提取字符串,也就是提取通过delims分隔的列内容。

  • 用法:

  • tokens=x:表示提取第x列。

  • tokens=x,y:表示提取第x列和第y列。

  • tokens=x-n:表示提取第x列至第n列。

  • tokens=*:表示提取全部列,或者删除每行前面的空格(忽略行首的所有空格)。

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

  • 注意:输出变量的个数由定义了的tokens决定。在FOR语句中显式声明%%i,使用tokens=可以隐式声明%%j、%%k等后续变量,只要不会引起试图声明高于字母“z”或“Z”的某个变量,则最多可以指定26个输出变量。

delims

  • 作用:delims用于定义分隔符,指定如何分割文件中的文本,它忽略(隐藏)分隔符,并以定义的分隔符来切分字符串。

  • 用法:delims=符号集,符号集指用做分隔符的标点符号,可以是一个,也可以是多个,当定义多个分隔符时,符号之间不用空格。如果分隔符后面还有内容,默认该分隔符与该内容将被一同忽略,除非使用tokens定义显示。

  • 注意:

  • 分隔符就是用delims指定的标点符号,该标点符号必须原本就存在于文本中,但文本中的标点符号不一定都要作为分隔符,只有被delims指定的才会起作用。

  • for /f命令默认空格和制表符为分隔符,当使用delims指定了新的分隔符后,会替换掉默认的空格和制表符分隔符集。如果需要用空格作为分隔符,且存在其他分隔符时,应把空格放在最后面。

  • 被定义的分隔符前后的内容将变成独立的小节(或列),这些小节可以为for命令编辑,比如使用tokens提取。

示例讲解

假设有一个名为“歌曲列表.txt”的文本文件,内容如下:

序号、歌手名-歌曲名.后缀名

1、饶天亮-玫瑰爱人.wma

2、高一首-我不愿错过.mp3

3、黃凱芹-傷感的戀人.MP3

4、黄灿-黄玫瑰.lrc

5、黎姿-如此这般的爱情故事.mp3

  • 如果想要提取序号,可以使用以下命令:

 @echo off

for /f "delims=、" %%i in (歌曲列表.txt) do echo %%i

pause>nul

这里delims=、表示定义顿号“、”为分隔符,并用该分隔符“、”切分文本字符串,因为默认只显示第一个分隔符前的内容,所以提取出了序号。

  • 如果想要提取歌手名和歌曲名,可以使用以下命令:

@echo off

for /f "tokens=2 delims=、." %%i in (歌曲列表.txt) do echo %%i

pause>nul

这里delims=、.定义顿号“、”和点号“.”作为分隔符,将原文分成三部分,然后使用tokens=2提取第二列的字符串,即“歌手名-歌曲名”。

  • 如果想要同时提取序号和歌曲名,可以使用以下命令:

@echo off

for /f "tokens=1,3 delims=、-." %%i in (歌曲列表.txt) do echo %%i %%j

pause>nul

这里delims=、-.表示定义顿号“、”、减号“-”和点号“.”三个标点符号为分隔符,将原文分隔成四部分,然后使用tokens=1,3提取第一列和第三列,即序号和歌曲名。

总的来说,tokens和delims是for /f命令中非常有用的参数,它们可以帮助用户高效地解析文本和提取所需信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值