批处理:FOR参数F之tokens详解

合集下载

批处理:FOR的参数F之delims详解下

批处理:FOR的参数F之delims详解下

要显示列,需要用到下节学习的tokens。如:
@echo off
for /f "tokens=1,2 delims=:" %%a in (易经.txt) do echo %%a %%b
pause>nul
你也可以使用冒号(:)和逗号(,),写法是“delims=:,”(使用英文双引号)。原文中的每行文字将被作为
仍用前面eol里的文本“a.txt”做试验。
例:如何只显示每行的第一个标点前的内容?
@echo off
for /f "eol=: delims=,, " %%i in (a.txt) do echo %%i
pause>nul
运行结果显示:
aaa
iii
eee
使用delims的目的主要是通过切分字符串获得可编辑的字符串以便于进行下一步编辑。Delims好比一把西瓜刀,文本信息就好比西瓜,使用delims这把西瓜刀将文本这个西瓜切分成许多小块,这样吃起来就方便了。
如果你想吃其中的某一块,怎么办呢?直接用刀叉tokens提取就可以了。请看下节。
pause>nul
如果我只要“床前明月光”这句话,就需要delims帮忙了:
@echo off
for /f "delims=," %%i in (静夜思.txt) do echo %%i
pause>nul
讲解:
delims=后面跟了一个逗号,表示用原文中的逗号作为分隔符(划分的方法)将古诗分成四个小节。默认情况下,delims只显示分隔符前的第一小节,分隔符通常被忽略掉。显示其他小节的诗句要用到列提取命令“tokens”。

bat脚本中Forf中的Delims和Tokens总结

bat脚本中Forf中的Delims和Tokens总结

bat脚本中Forf中的Delims和Tokens总结在For命令语句的参数F中,最难理解的就是Delims和Tokens两个选项,本⽂简单的做⼀个⽐较和总结。

“For/f”常⽤来解析⽂本,读取字符串。

分⼯上,delims负责切分字符串,⽽tokens负责提取字符串。

如果把字符串当作蛋糕,Delims像⼑⼦,⽤来切蛋糕,tokens像叉⼦,⽤来取切好的蛋糕。

下⾯我们⽤实例来进⾏理解。

把以下内容保存为⽂本⽂件“歌曲列表.txt”,注意扩展名为“.txt”:序号、歌⼿名-歌曲名.后缀名1、饶天亮-玫瑰爱⼈.wma2、⾼⼀⾸-我不愿错过.mp33、⿈凱芹-傷感的戀⼈.MP34、黄灿-黄玫瑰.lrc5、黎姿-如此这般的爱情故事.mp3代码1:显⽰全部内容@echo offfor /f %%i in (歌曲列表.txt) do echo %%ipause>nul运⾏结果:序号、歌⼿名-歌曲名.后缀名1、饶天亮-玫瑰爱⼈.wma2、⾼⼀⾸-我不愿错过.mp33、⿈凱芹-傷感的戀⼈.MP34、黄灿-黄玫瑰.lrc5、黎姿-如此这般的爱情故事.mp3讲解:如果不使⽤参数“/f”,运⾏结果只显⽰括号⾥的⽂字字符“歌曲列表.txt”,⽽不能读取⽂本⽂件“歌曲列表.txt”中的内容。

可见,“/f”是解析⽂本字符串的好⼯具。

⼀、delims假如只要序号,不要歌⼿名、歌曲名和后缀名,如何办到?代码2:默认提取第⼀列@echo offfor /f "delims=、"%%i in (歌曲列表.txt) do echo %%ipause>nul运⾏结果:序号12345讲解:"delims=、"表⽰定义顿号“、”为分隔符,并⽤该分隔符“、”切分⽂本字符串。

字符串就是“歌曲列表.txt”⾥的内容,也就是⽂件⾥的⽂字和标点符号。

该顿号是原⽂中就有的。

除了顿号“、”,原⽂中还有减号“-”和点号“.”,因此你也可以⽤它们来做分隔符。

bat文件中for用法

bat文件中for用法

bat文件中for用法在批处理(batch)文件中,`for` 命令用于循环处理一系列文件或文本行。

下面是 `for` 命令的一些基本用法和示例:1. 基本的 `for` 循环:```batchecho offfor %%i in (1 2 3 4 5) do (echo %%i)```2. 使用 `do` 命令:```batchecho offfor %%i in (1 2 3 4 5) do (echo This is loop %%i)```3. 使用 `in` 命令中的文件:```batchecho offfor %%i in ( ) do (echo %%i has %%~zi bytes )```4. 遍历文件中的每一行:```batchecho offfor /f "tokens=" %%i in () do ( echo %%i)```5. 使用 `delims` 设置分隔符:在处理文本文件时,你可以设置分隔符,以便按特定的格式解析每一行。

例如,假设有一个以逗号分隔的文本文件:```batchecho offfor /f "tokens=1,2 delims=," %%i in () do (echo Column1: %%i, Column2: %%j)```6. 结合 `if` 命令:你还可以在 `for` 循环内部使用 `if` 命令进行条件判断:```batchecho offfor %%i in (1 2 3 4 5) do (if %%i lss 3 (echo Less than 3) else (echo More than or equal to 3))```7. 跳过循环的迭代:可以使用 `continue` 和 `break` 来控制循环的行为:```batchecho offfor %%i in (1 2 3 4 5) do (if %%i == 3 (continue) else (echo %%i))```8. 使用 `set` 命令修改变量:在循环内部,你可以使用 `set` 命令来修改变量的值:```batchecho offsetlocal enabledelayedexpansionfor %%i in (1 2 3 4 5) do (set /a "count+=1"echo Loop count: !count! - %%i)```以上是 `for` 命令的一些基本用法和示例。

DOS批处理命令For循环命令详解

DOS批处理命令For循环命令详解

DOS批处理命令For循环命令详解for命令是⼀种对⼀系列对象依次循环执⾏同⼀个或多个命令的在命令⾏或批处理中运⾏的命令,结合⼀些Windows管理中的程序后,其处理功能强⼤、应⽤灵活⽅便程度令⼈刮⽬相看。

但是,其帮助信息也因此复杂往往令初学者望⽽⽣畏,这⾥根据本⼈的学习理解,把其⽤法分解简化,疏忽和错误也许在所难免。

基本格式(这⾥写的是在命令⾏⾥⽤的格式,如果是在批处理中,需要把其中%再多加个%形成%%):for /参数 %变量 in (集) do 命令(注:上⾯除中⽂的以外,其余的是按它的格式要求书写的,⼤⼩写都⾏)参数:FOR分四种参数 D L R F,并且有的参数还可附加另外的选项下⾯会分别介绍变量:(记住如果是在批处理中使⽤for命令时,变量前的%需改为%%)这个变量名是由单个字母组成且区分⼤⼩写(原帮助是这么说的,实际运⽤中⽤单个数字作为变量名试过证明也可⾏),如%B和%b代表的是不同的变量。

FOR命令会在每次循环中,把in (集)中读取到的值赋于这个变量,以便其后的命令中引⽤。

集:由系列⽂件、字符串或由命令产⽣的内容形成的集合(当然可⽤通配符 * ?,还可引⽤环境变量),FOR命令是按⼀定顺序和规律分次读取集中内容,赋值给变量,并执⾏do后的命令,进⾏循环下⼀轮,直⾄集中内容读取完毕,⽽括号是格式必须的(in到后⾯括号之间要有空格)。

命令:可以是任何合格的DOS命令或外部可被DOS调⽤的程序,且可采⽤括号把多条命令括起来,在⼀次循环中执⾏。

附注:由于⼀些⽬录或⽂件名可能会有空格,所以很多时候集⾥和命令⾥往往需要⽤英⽂引号括起来(但有时引号⾥的内容可能会被认为是字符串)表⽰是⼀整体,下⾯开始的有些例中为简捷起见,忽略⽂件名或⽬录名带空格这种情况。

现在按参数分类举例解释其⽤法:⼀、参数 /dfor /d %%变量 in (集) do 命令/d 参数是指定仅对⽬录⽽不是⽂件执⾏的for命令。

批处理命令中for循环基本用法

批处理命令中for循环基本用法

批处理命令行中for循环基本用法for循环是在办公自动化中非常实用的语句之一,本节讨论DOS语言中for循环的各种模式:如/r,/d,/l,/f等,以及各种参数:如tokens,delims,usebackq等的基本用法。

我们须要根据实际情况选择不同的模式和参数来配置for循环以达到我们的目的。

1、【for语句的常规用法】形式1:for %%i in (字符串集合/数字列表/…) do 命令语句@echo offfor %%i in (aa,bb,cc) do echo %%ipause结果为:aabbcc注:这里如果用点进行分割,字符串会作为一个整体输出如果用逗号分割,则会一次一个单次进行打印。

判断某个磁盘是否存在,如果盘符存在,则输出它:@echo offecho 存在有驱动器:for %%i in (a,b,c,d,e,f,g) if exist %%i: echo %%ipause显示当前目录下的文件名称(非文件夹,文件夹将不会被列出):@echo offfor %%i in (*.*) do echo "%%i"pause仅显示当前目录下的txt文件名称(通配符*.txt的用法):@echo offfor %%i in (*.txt) do echo "%%i"pause把txt换成其他扩展名亦可仅列出其他格式的文件名仅显示当前目录下的txt文件名称(通配符?规定字符个数):@echo offfor %%i in (??.txt) do echo "%%i"pause仅会输出当前目录下文件名为2个字符的txt文件名2、【关于for语句的/f模式(遍历文件内容模式)】①/f模式/f模式用于遍历文件中的内容:@echo offfor /f %%i in (test.txt) do echo %%ipause运行的结果,会逐行打印test.txt文件中的内容②delims参数(表示分隔符)使用delims提取每一行在特定符号之前的内容;当设置delims为逗号(,)时,只显示每一行逗号之前内容;@echo offfor /f "delims=," %%i in (test.txt) do echo %%i pause如果识别切分的符号有多个,则可以直接继续在第一个后面写,例如:"delims=.,"此时会先判定是否有英文句号,如果没有则再判断有没有英文逗号。

批处理-for命令详解

批处理-for命令详解

批处理-for命令详解⼤纲⼀前⾔⼆ for语句的基本⽤法三 for /f (delims、tokens、skip、eol、userbackq、变量延迟)四 for /r (递归遍历)五 for /d (遍历⽬录)六 for /l (计数循环)⼀、前⾔在批处理中,for是最为强⼤的命令语句,它的出现,使得解析⽂本内容、遍历⽂件路径、数值递增/递减等操作成为可能;配合if、call、goto等流程控制语句,更是可以实现脚本复杂的⾃动化、智能化操作;合理使⽤for语句,还能使代码⼤为简化,免除各位编写⼤量重复语句之苦。

⽽能否熟练使⽤for语句,已经成为衡量⼀个⼈批处理⽔平⾼低最主要的标准。

在这个系列教程中,我将通过实际应⽤中频繁出现的例⼦,带领⼤家步⼊for语句的神奇之门,⼀步步迈向for语句的魔幻殿堂,使得⼤家在实际的应⽤中,能独⽴写出简洁⾼效的代码,在批处理的世界⾥⾃由驰骋。

注意:以下的讲解,都是基于简体中⽂版Windows XP Pro SP3的操作系统环境。

⼆、for语句的基本⽤法正如⾊彩缤纷的七彩光芒是由红绿蓝三原⾊构成的⼀样,最复杂的for语句,也有其基本形态,它的模样是这样的:在cmd窗⼝中:FOR %variable IN (set) DO command [command-parameters]在批处理⽂件中:FOR %%variable IN (set) DO command [command-parameters]具体例⼦:For %i in (1 2 3) do @echo %i之所以要区分cmd窗⼝和批处理⽂件两种环境,是因为在这两种环境下,命令语句表现出来的⾏为虽然基本⼀样,但是在细节上还是稍有不同。

最明显的⼀个差异就是:在cmd窗⼝中,for之后的形式变量I必须使⽤单百分号引⽤,即%i;⽽在批处理⽂件中,引⽤形式变量i必须使⽤双百分号,即%%i。

为了⽅便起见,若不是特别强调,以下的讲解都以批处理⽂件环境为例。

win for命令参数

win for命令参数

win for命令参数win for是一个命令行工具,它用于在Windows操作系统中执行一系列任务。

通过使用各种参数,用户可以在命令行界面中快速而有效地完成各种任务。

下面将介绍win for的一些常用参数,并说明它们的使用方法和作用。

首先,我们需要了解一下win for的基本语法。

win for的基本语法如下:for /R文件目录%%G in (文件匹配模式) do命令语句其中,/R参数用于递归地遍历指定的文件目录,并按照文件匹配模式选择相应的文件。

然后,命令语句将作用于每一个符合条件的文件。

在命令语句中,可以使用%%G来引用当前正在处理的文件名。

接下来,我们来看一些常用的win for参数和实际使用场景:1. /F参数:用于遍历一个文本文件的每一行。

例如,我们可以使用以下命令来读取一个文本文件,并逐行执行命令:for /F "tokens=* USEBACKQ" %%G in ("file.txt") do命令语句2. /D参数:用于遍历指定目录的子目录。

例如,我们可以使用以下命令来遍历指定目录下的所有子目录,并执行相应的命令:for /D %%G in ("目录路径\*") do命令语句3. /L参数:用于遍历一个指定的范围。

例如,我们可以使用以下命令来遍历一个指定范围内的数字,并做相应的处理:for /L %%G in (开始,步长,结束) do命令语句4. /I参数:用于循环遍历指定的字符串列表。

例如,我们可以使用以下命令来遍历一个指定的字符串列表,并逐一执行相应的命令:for /I %%G in (字符串1,字符串2,字符串3, ...) do命令语句5. /A参数:用于遍历指定目录中的文件和子目录,并执行相应的命令。

例如,我们可以使用以下命令来遍历指定目录中的文件和子目录,并执行相应的命令:for /R %%G in (*) do命令语句以上是win for命令的一些常用参数和使用场景,我们可以根据具体的需求选择合适的参数和命令语句来完成相应的任务。

批处理命令——for

批处理命令——for

批处理命令——for【1】for命令简介 先把for循环与for命令类⽐⼀下,这样学习理解快。

for 循环语句,⼀般格式如下:1for (表达式1;表达式2;表达式3)2 {3循环体;4 } 1. 表达式1 ⼀般为初始状态赋值表达式,给控制变量赋初值。

2. 表达式2 ⼀般为关系表达式或逻辑表达式,为循环控制条件。

3. 表达式3 ⼀般为每次执⾏循环体后向控制变量重新赋值的表达式(给控制变量增量或减量)。

4. 语句:循环体,⼀般为复合语句(即可能需要执⾏多条语句)。

举个实例:1for (int i=0; i < 100; ++i)2 {3 cout << i << endl;4 } for 命令,⼀般格式如下: 在cmd窗⼝中使⽤格式:FOR %variable IN (set) DO command [command-parameters] 在批处理脚本中使⽤格式:FOR %%variable IN (set) DO command [command-parameters] 1. 在cmd窗⼝中使⽤,变量名必须⽤单%引⽤(即:%variable);在批处理脚本中使⽤,变量名必须⽤双%引⽤(即:%%variable)。

2. for、in和do是for命令的三个关键字,缺⼀不可。

3. 关键字in之后,do之前的括号不能省略。

举个实例:新建⼀个⽂本⽂件,命名为fordemo,修改⽂件类型为bat,⽤Notepad++打开编辑内容为:1@echo off2for %%i in (1 2 3 4 5) do@echo %%i3pause>nul 执⾏结果: 嗯哼,原来for命令就这么简单?嗨,同学,不要浮躁,保持冷静,更要理智。

下⾯,且看对上例语句的分析: 从命令组成结构由左向右剖析,除过关键字,依次分别为: 1. 变量名为i,i太简单,作为变量名不具备见名知意的特点。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

批处理:FOR参数F之tokens详解.txt37真诚是美酒,年份越久越醇香浓烈;真诚是焰火,在高处绽放才愈显美丽;真诚是鲜花,送之于人,手有余香。

批处理:FOR参数/F之tokens 详解(原创)
(四)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。

相关文档
最新文档