`
wolfmaster
  • 浏览: 159104 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

FOR参数F的选项delims与tokens上

F# 
阅读更多
FOR参数F的选项delims与tokens

本篇为《FOR入门与精通秘籍》的补充内容。

在For命令语句的参数F中,最难理解的就是Delims和Tokens两个选项,本文简单的做一个比较和总结。

“For /f”常用来解析文本,读取字符串。分工上,delims负责切分字符串,而tokens负责提取字符串。如果把字符串当作蛋糕,Delims像刀子,用来切蛋糕,tokens像叉子,用来取切好的蛋糕。下面我们用实例来进行理解。

把以下内容保存为文本文件“歌曲列表.txt”,注意扩展名为“.txt”:

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

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

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

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

4、黄灿-黄玫瑰.lrc

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

代码1:显示全部内容

@echo off

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

pause>nul

运行结果:

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

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

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

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

4、黄灿-黄玫瑰.lrc

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

讲解:

如果不使用参数“/f”,运行结果只显示括号里的文字字符“歌曲列表.txt”,而不能读取文本文件“歌曲列表.txt”中的内容。可见,“/f”是解析文本字符串的好工具。

一、delims

假如只要序号,不要歌手名、歌曲名和后缀名,如何办到?

代码2:默认提取第一列

@echo off

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

pause>nul

运行结果:

序号

1

2

3

4

5

讲解:

"delims=、"表示定义顿号“、”为分隔符,并用该分隔符“、”切分文本字符串。字符串就是“歌曲列表.txt”里的内容,也就是文件里的文字和标点符号。

该顿号是原文中就有的。除了顿号“、”,原文中还有减号“-”和点号“.”,因此你也可以用它们来做分隔符。

代码3:用减号“-”做分隔符

@echo off

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

pause>nul

运行结果:

序号、歌手名

1、饶天亮

2、高一首

3、黃凱芹

4、黄灿

5、黎姿

讲解:

因为,当减号“-”被用做分隔符时,每行内容被减号“-”分隔成前后两半,默认只显示前半部分,而后半部分连同分隔符减号“-”都被忽略(省略)了。

代码4:用点号“.”做分隔符

@echo off

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

pause>nul

运行结果:

序号、歌手名-歌曲名

1、饶天亮-玫瑰爱人

2、高一首-我不愿错过

3、黃凱芹-傷感的戀人

4、黄灿-黄玫瑰

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

讲解:

默认情况下,单纯使用delims而不用tokens时,只显示第一个分隔符前的内容,第一个分隔符和第一个分隔符后面的内容将被忽略。

代码5:定义多个分隔符

@echo off

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

pause>nul

运行结果:

序号

1

2

3

4

5

讲解:

原因是,当定义顿号“、”、减号“-”和点号“.”三个标点符号为分隔符后,原文被分隔成四个部分。

如第二行“1、饶天亮-玫瑰爱人.wma”将被分隔成“1”、“饶天亮”、“玫瑰爱人”和“wma” 四个部分。

从第一行到最后一行,每行的每个部分对应下来相当于一个竖列。因此,原文就有“序号”、“歌手名”、“歌曲名”、“后缀名”四列。

一般情况下,只读取第一列的内容。后面的内容需要用tokens选项提取。
分享到:
评论

相关推荐

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

    批处理FOR参数F之tokens详解 在批处理中,FOR参数F之tokens是一种强大的命令,用于提取文本信息。tokens是一个选项,用于指定要提取的列数或范围。以下是tokens的详细解释和示例。 tokens=x,y,m-n tokens选项可以...

    DOS FOR 循环

    for /f "tokens=2,3,4 delims=/" %i in ('date /T') do @echo %c-%i-%j ``` 此命令利用`FOR /F`命令从`date /T`命令的输出中提取月份、日期和年份,并按照`YYYY-MM-DD`的格式输出。 3. **删除指定列表中的文件**...

    史上最强之dos命令 - FOR - 高级应用范例

    c:\>for /f "tokens=2,3,4 delims=/" %a in ('date /t') do @echo %c-%a-%b ``` **解释**: - `tokens=2,3,4`:指定了需要提取的字段位置,分别为月份、日和年份。 - `delims=/`:定义了分隔符,这里是`/`。 - `date...

    dos命令之for详解

    `FOR /F`提供了多种解析选项,可以帮助用户更精细地控制文件内容的处理过程。主要选项包括: - **eol=c**: 行注释字符的结尾(只有一个字符)。 - **skip=n**: 忽略文件开始处的`n`行。 - **delims=xxx**: 分隔符集...

    for命令

    for %f in (*.bak) do ren "%f" "File%counter%.txt" & set /A counter+=1 ``` 通过熟练掌握`for`命令,你可以编写出更复杂的批处理脚本来自动化日常的文件管理任务,极大地提高工作效率。 总之,`for`命令是DOS...

    批处理 FOR的语法,很好很详细的说明

    FOR /F "tokens=1-3 delims==" %%i IN ('set varname') DO set "var=%%j%%k" ``` - **tokens=1-3**:表示读取的字段范围。 - **delims==**:分隔符。 #### 四、实例演示 ##### 实例1:遍历文件夹下的所有文件...

    批处理for命令详解

    FOR /F "tokens=1,2 delims=:" %%i IN (input.txt) DO ( echo 第一个字段: %%i echo 第二个字段: %%j ) pause ``` 该脚本会读取 `input.txt` 文件中的每一行,按照冒号分隔,然后输出每一行的前两个字段。 ...

    udp tcp 端口查询

    for /f "tokens=2 delims=:" %%A in ("%%a") do set TCP端口=%%A for /f "skip=2 delims=, tokens=1" %%A in ('tasklist /fi "PID eq %%b" /FO CSV') do set TCP进程=%%~A echo !TCP端口!!TCP进程!>>查询结果.txt...

    Dos命令大全

    @for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call door.bat %%i %%j %%k tokens的用法请参见上面的sample1,在这里它表示按顺序将victim.txt中的内容传递给door.bat中的参数%i %j %k。 而...

    windows批处理-基础-循环判断语句使用

    for /f "tokens=2,4-6" %%i in (kk.txt) do echo %%i,%%j,%%k,%%l pause ``` 通过使用`tokens`参数,可以选择文件中的特定字段进行输出。 **7. 跳过指定行数** ```batch @echo off echo kk.txt中的每一行 for /f ...

    用bat批量获取和修改文件名的方法

    @FOR /F "tokens=* delims=" %%A IN (old_names.txt) DO @( if exist %%A ( for /f "tokens=* delims=" %%B in (new_names.txt) do ( rename %%A %%B ) ) ) ``` 这条命令将根据两个文本文件中的内容进行批量...

    如何编写批处理文件批处理文件批处理文件

    FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i 会枚举当前环境中的环境变量名称。 另外,FOR 变量参照的替换已被增强。您现在可以使用下列 选项语法: ~I - 删除任何引号("),扩充 %I %~fI - 将 %I 扩充...

    winpe的安装方法

    for,/f,"tokens=2 delims={",%%i,In (%windir%\win7ram.ini) Do ( set vidb=%%i) for,/f,"tokens=1 delims=}",%%i,In ("%vidb%") Do ( set vidram={%%i}) echo %vidram%>%windir%\win7ram.ini ``` 此段代码...

    批处理命令大全批处理命令大全

    - `FOR /F ["options"] %%variable IN (file-set) DO command`: 遍历文件集合。 - `FOR /F ["options"] %%variable IN ("string") DO command`: 遍历字符串。 - `FOR /F ["options"] %%variable IN (command) DO ...

    mysql自动备份脚本

    for/f"Tokens=1Delims=/"%%i in ('date/t') do set "dt=%%i" for/f"Tokens=1"%%i in ('time/t') do set "tm=%%i" ``` - **`date/t`**:获取当前日期,格式为“月 日 年”。 - **`time/t`**:获取当前时间,格式为...

    windows 批处理经典代码

    例如,`for /f "tokens=1 delims=," %i in (file.txt) do echo %i`将从`file.txt`中按逗号分隔的每一行提取第一个字段。 - **替换字符串**:`set`命令配合`/p`和`/a`选项可以实现字符串的替换。例如,`set var=%var...

    ntsd资料.txt

    for /f "delims=, tokens=2" %%i in (1.txt) do set a=%%i ntsd -c q -p %a% echo PID NAME echo ============ echo %a%%T% del 1.txt del 2.txt pause >nul exit ``` 这个批处理脚本首先提示用户输入要调试的进程...

    DOS批处理高级教程精选合编.格式化版

    FOR /F "tokens=1,2 delims=:" %%a IN (data.txt) DO ( SET var1=%%a SET var2=%%b ) ``` #### 第三章 FOR 命令中的变量 - `~I`: 删除任何引号("),扩展 %I。 - `%~fI`: 将 %I 扩展到一个完全合格的路径名。 ...

Global site tag (gtag.js) - Google Analytics