!!!!!!!!!!!!!第一次写博客!!!!!!!!!!!!!!!!!!!
批处理这个东西看起来简单,操作起来好烦!!!!!!!!!
搞了很久分享一下如何用批处理删除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
!!!!!真的完了!!!!!!!!!!!!!!!!!!!!!!!!!!!