批处理--delims分割字符串

批处理--delims分割字符串

使用delims的目的主要是通过切分字符串获得可编辑的字符串以便于进行下一步编辑。Delims好比一把西瓜刀,文本信息就好比西瓜,使用delims这把西瓜刀将文本这个西瓜切分成许多小块,这样吃起来就方便了。…… -
代码:
@echo off
for /f "delims=:" %%a in (易经.txt) do echo %%a
pause>nul
运行结果将显示第一小节(列)的内容。
原因是没有定义显示的列,默认情况下忽略第一个分隔符(冒号)后面的内容。
要显示列,需要用到下节学习的tokens。如:
@echo off
for /f "tokens=1,2 delims=:" %%a in (易经.txt) do echo %%a %%b
pause>nul
你也可以使用冒号(:)和逗号(,),写法是“delims=:,”(使用英文双引号)。原文中的每行文字将被作为分隔符的冒号和逗号分成多个小节:(不知道百度怎么搞的,竟然说我的表格超载!省略了)
代码:
@echo off
for /f "delims=:," %%a in (易经.txt) do echo %%a
pause>nul
运行结果将显示第一小节(列)的内容。
没有定义列的时候,默认只显示第一列,忽略分隔符和第一个分隔符后的内容。
例如:文本“静夜思.txt”的内容是:
床前明月光,疑是地上霜,举头望明月,低头思故乡。
文本中有四句古诗,诗句之间用逗号分隔。古诗原本是没有标点符号的,标点符号是后人才加上去的。逗号在语文上是语气暂停的意思,其实就是用来分隔语句意思以便于阅读和理解。Delims=,的意思就是提取逗号做分隔符,并以此将诗句分成四个小列或小节。
第一列 分隔符 第二列 分
隔
符 第三列 分
隔
符 第三列 
第一行 床前明月光 , 疑是地上霜 , 举头望明月, , 低头思故乡。 

如果我要用for将四句诗都显示到屏幕上,不需要任何参数即能实现:
@echo off
for /f %%i in (静夜思.txt) do echo %%i 
pause>nul
如果我只要“床前明月光”这句话,就需要delims帮忙了:
@echo off
for /f "delims=," %%i in (静夜思.txt) do echo %%i 
pause>nul
讲解:
delims=后面跟了一个逗号,表示用原文中的逗号作为分隔符(划分的方法)将古诗分成四个小节。默认情况下,delims只显示分隔符前的第一小节,分隔符通常被忽略掉。显示其他小节的诗句要用到列提取命令“tokens”。
仍用前面eol里的文本“a.txt”做试验。
例:如何只显示每行的第一个标点前的内容?
@echo off
for /f "eol=: delims=,, " %%i in (a.txt) do echo %%i 
pause>nul
运行结果显示:
aaa
iii
eee
你好
注意:
文本中有英文的点号和中文的逗号,点号要放在逗号前面。
符号集中(也就是=后面的标点符号),各个符号之间没有空格。
文本中用空格分隔的,符号集里中文逗号后面只有一个空格,且必须放到最后。
用于分隔的标点符号重复的一般只取一个做代表。
for默认是以空格和,:;/等标点符号作分割符的,所以要取得整行内容通常会用"delims="这样的形式来取消for的默认分割符。
例:为什么第三行的iii后面的内容不见了?
@echo off
for /f    %%i in (a.txt) do echo %%i 
pause>nul
讲解:
这里没有使用delim进行分隔,而带有空格的行空格后面的内容被忽略了,原因就是默认情况下,也就是没有即使没有用delims选项,for也会以空格作为分隔符,将空格后的内容屏蔽掉。
使用delims的目的主要是通过切分字符串获得可编辑的字符串以便于进行下一步编辑。Delims好比一把西瓜刀,文本信息就好比西瓜,使用delims这把西瓜刀将文本这个西瓜切分成许多小块,这样吃起来就方便了。
如果你想吃其中的某一块,怎么办呢?直接用刀叉tokens提取就可以了。
bat批处理是一种Windows操作系统中常用的脚本语言,用于批量处理指令和命令。要实现歌曲名和歌手名对调的功能,可以利用bat批处理来完成这个任务。 首先,你需要将所有的歌曲名和歌手名存储在一个文本文件中,每一行代表一首歌曲,歌曲名和歌手名之间使用分隔符(比如空格或者逗号)分开。 然后,使用bat批处理脚本来读取这个文本文件,并对每一行进行处理。可以使用字符串处理命令和变量来提取歌曲名和歌手名,并通过调换位置的方法重新组合。 下面是一个简单的示例脚本: ``` @echo off setlocal enabledelayedexpansion REM 设置输入文件路径和输出文件路径 set "inputFile=input.txt" set "outputFile=output.txt" REM 清空输出文件 type nul > %outputFile% REM 逐行处理输入文件 for /F "tokens=1,2 delims=," %%A in (%inputFile%) do ( REM 提取歌曲名和歌手名 set "songName=%%A" set "artistName=%%B" REM 调换位置并写入输出文件 echo !artistName!,!songName! >> %outputFile% ) echo "歌曲名和歌手名对调完成!" endlocal ``` 在这个示例中,我们先设置了输入文件路径和输出文件路径。然后通过循环读取输入文件的每一行,并使用字符串处理命令将歌曲名和歌手名提取出来。最后,通过调换位置的方式重新组合,并将结果写入到输出文件中。 运行这个bat脚本后,你将得到一个包含歌手名和歌曲名对调结果的输出文件。 这个示例只是一个简单的演示,实际应用中可能需要根据具体情况进行修改和调整。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lst0426

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值