首页 > 编程知识 正文

批处理删除txt指定内容,批量删除txt文件前几行

时间:2023-05-04 21:22:45 阅读:216960 作者:4852

!!!!!!!!!!!!!第一次写博客!!!!!!!!!!!!!!!!!!!

批处理这个东西看起来简单,操作起来好烦!!!!!!!!!

搞了很久分享一下如何用批处理删除TXT文件的指定行,这里主要是特定步长删除。

直接上代码吧:

@echo off

setlocal enabledelayedexpansion

set itr=0

for /f "delims= " %%i in (list.txt) do (

set /a itr=itr+1

set /a data=!itr!%%2

if !data!==0 echo %%i>>temp.txt

)
pause

第一行  就不解释了

第二行  开始:注意前方有坑!!!!!!!!!!!!!

关键词:变量延时,不懂得小伙伴可以百度一下

很坑,因为你以为你的变量已经运算了,值已经重写了,然而并没有!!!!!!!

所以要做这么一个叫做
setlocal enabledelayedexpansion
什么的玩意儿,就是用来改变变量延时,然后你再使用变量时用!!把变量包裹起来就好了,就没有变量延时了。

回到代码中:if后面的!data!就是这的样子的!!!!!!!!!!!!!!

第三行   因为我要知道我现在在哪一行,所以需要一个变量迭代。第五行就用到他啦,每遍历一行就加一,很简单啦。/a表示算是运算的意思

第四行   就是遍历TXT文件啦,怎么遍历自己查,太复杂,讲不清楚。但是list.txt就很简单啦,就是所有文件的路径按行保存的文件。怎么生成的呢,代码!!

cd 文件夹路径

dir *.后缀 /s/p >list.txt

第五行  就是叠加啦,每一行叠加一次,很完美的啦!!!!!!!!!!

第六行  就是计算这一行看他是不是我想要的啦,我这里设计的步长为1,就是间隔一行就取出来进行操作。

第七行  跟第六行连起来就是一个完整的判断加操作啦。坑来了!!!!!!!!!!!!!!!

也许你会认为把第六行的运算直接放到if的后面岂不很好,很美好的嘛。然而并没有!!!!!!!!!

所以就增加了一个多余的data变量来存储计算结果,聪敏的人肯定不会这这样做。要去看看if后面是不是不能跟表达式,要不就是我错了。

完了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!没完!!!!!!!!!!!!!!!!!!!!!!!!!

还要删除呢

有了要删除的目标还不好整?

附代码!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

@echo off

setlocal enabledelayedexpansion

set itr=0

for /f "delims= " %%i in (temp.txt) do del /s/q "%%i"

pause

!!!!!真的完了!!!!!!!!!!!!!!!!!!!!!!!!!!!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。