继续接上一课,记录学习笔记
for /f提取文字信息(bat脚本如何把txt文件内容展示出来?)
新建text.txt 文件
内容:
暗恋一个人的表现
1、激动和兴奋:每次想到或见到这个人时,你可能会感到心跳加速,感到一种难以抑制的激动。
2、渴望和期待:你可能会渴望与这个人有更多的接触和交流,期待每一次可能的相遇。
3、羞涩和紧张:在暗恋对象面前,你可能会感到紧张和不自在,担心自己的言行会暴露你的感情。
4、幻想和憧憬:你可能会花很多时间幻想与这个人在一起的场景,憧憬未来可能发生的事情。
案例1:
@echo off
for /f %%I in (text.txt) do echo %%I
pause
for /f语句执行过程分析:
for循环的原理是一次处理每个元素,加上for f之后呢,也是循环显示,只不过是一行一行显示,而不是一次性把text里面的文字全部显示到屏幕上。画重点笔记:for /f是按行为单位,来处理文本的,不是一个一个字,也不是一次性全部显示,而是一行一行来处理。
默念加深一下印象吧,for /f提取文字信息!for /f提取文字信息!for /f提取文字信息!
切分字符利器:delims=(提取某个符号之前的信息,比如每行逗号之前的信息,也可以是其他=》
案例2
@echo off
for /f "delims=," %%I in (text.txt) do echo %%I
pause
巩固理解:以行为单位,每行第一个逗号之后的内容都不见了,提取每行逗号之前的所有内容。”delims=,“的含义:以逗号作为被处理的字符串的分割符号。可以是= ; 。 等其他符号
笔记:如果delims=符号列表,如果符号列表为空,就是delims=结束了,这里默认符号是空格。
这里提到了符号列表,什么是列表。就是一串,很多个符号的意思。比如delims=,!?
这样,第一个,或者第一个!或者第一个?之前的内容都被提取出来了。
逐行读取text文本种的内容,以,和!和?分割每一行,如果该行不存在这三个符号,则无需处理,如果该行有,!?那么代码指挥读取第一个分隔符里面的内容。for /f默认提取第一个分隔符分割的字符串
案例:
text文件:
上班路上和卢瑟一起聊天,emmm
他说宝龙城有一家米粉店。很正宗 (路上就开始流口水了)
好像是一家桂林米粉店。炝锅米粉?哈哈具体没听清楚。
今天中午准备去宝龙城尝尝。hahaha
我问价格怎么样?心里想会不会很贵,lol
emmm?...
超过30就不去了!预算提高一点。平时都是15
案例3
@echo off
for /f "delims=,?" %%I in (text2.txt) do echo %%I
pause
delims= 这个参数,如果指定了多个分隔符,如果一行里面有多个分隔符,他只可以提取第一个分隔符前面的内容,那如果我们要提取的信息在第二个,第三个分隔符上怎么办呢,定点提取 tokens=来咯
tokens=1,2,3
来背一首诗吧
text内容:
红豆生南国,春来发几枝。愿君多采撷,此物最相思。
提取此物最相思
案例4
@echo off
for /f "delims=, tokens=3" %%I in (text3.txt) do echo %%I
pause
注意=,与tokens中间有个空格..
那如果把红豆生南国,和此物最相思都提取出来呢
案例5
@echo off
for /f "delims=, tokens=1,3" %%I in (text3.txt) do echo %%I %%L
pause
这里需要说明:
tokens=1,3这里有两个变量值, %%I %%L后面就需要指定两个值来接受,就是1被I接受了
3被L接受。如果tokens=1,2,3,4 那就需要指定是个变量 %%I %%L %%M %%N 分别来接受1234的值
text:
《相思》是唐代诗人王维的诗作。此诗借咏物而寄相思,全篇不离红豆,正用其相思子之名以关合相思之情。
首句写红豆产地;次句以“发几枝”一问,语极朴实,而又极富形象性,设问自然,则暗逗情怀;三句寄意友人“多采撷”,
言在此而意在彼;末句点明其相思属性,且用一“最”字推达极致,则“多采撷”的理由自见,而自身所寄之意亦深含其中。
全诗风格明快,却又委婉含蓄,语浅而情深,相传当时即为人谱曲传唱,流行江南。
案例6
@echo off
for /f "delims=, tokens=1-5,8" %%I in (text3.txt) do echo %%I %%J
pause
连续的数字,可以用短岗简写比如12345可以写成1-5