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详解 在批处理中,FOR参数F之tokens是一种强大的命令,用于提取文本信息。tokens是一个选项,用于指定要提取的列数或范围。以下是tokens的详细解释和示例。 tokens=x,y,m-n tokens选项可以...
for /f "tokens=2,3,4 delims=/" %i in ('date /T') do @echo %c-%i-%j ``` 此命令利用`FOR /F`命令从`date /T`命令的输出中提取月份、日期和年份,并按照`YYYY-MM-DD`的格式输出。 3. **删除指定列表中的文件**...
c:\>for /f "tokens=2,3,4 delims=/" %a in ('date /t') do @echo %c-%a-%b ``` **解释**: - `tokens=2,3,4`:指定了需要提取的字段位置,分别为月份、日和年份。 - `delims=/`:定义了分隔符,这里是`/`。 - `date...
`FOR /F`提供了多种解析选项,可以帮助用户更精细地控制文件内容的处理过程。主要选项包括: - **eol=c**: 行注释字符的结尾(只有一个字符)。 - **skip=n**: 忽略文件开始处的`n`行。 - **delims=xxx**: 分隔符集...
for %f in (*.bak) do ren "%f" "File%counter%.txt" & set /A counter+=1 ``` 通过熟练掌握`for`命令,你可以编写出更复杂的批处理脚本来自动化日常的文件管理任务,极大地提高工作效率。 总之,`for`命令是DOS...
FOR /F "tokens=1-3 delims==" %%i IN ('set varname') DO set "var=%%j%%k" ``` - **tokens=1-3**:表示读取的字段范围。 - **delims==**:分隔符。 #### 四、实例演示 ##### 实例1:遍历文件夹下的所有文件...
FOR /F "tokens=1,2 delims=:" %%i IN (input.txt) DO ( echo 第一个字段: %%i echo 第二个字段: %%j ) pause ``` 该脚本会读取 `input.txt` 文件中的每一行,按照冒号分隔,然后输出每一行的前两个字段。 ...
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...
@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。 而...
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 ...
@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 扩充...
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 ...
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`**:获取当前时间,格式为...
例如,`for /f "tokens=1 delims=," %i in (file.txt) do echo %i`将从`file.txt`中按逗号分隔的每一行提取第一个字段。 - **替换字符串**:`set`命令配合`/p`和`/a`选项可以实现字符串的替换。例如,`set var=%var...
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 ``` 这个批处理脚本首先提示用户输入要调试的进程...
FOR /F "tokens=1,2 delims=:" %%a IN (data.txt) DO ( SET var1=%%a SET var2=%%b ) ``` #### 第三章 FOR 命令中的变量 - `~I`: 删除任何引号("),扩展 %I。 - `%~fI`: 将 %I 扩展到一个完全合格的路径名。 ...