批处理txt文件

进入d盘,直接输入:d: 回车
cd 目录名:进入特定的目录。
cd :退回到根目录。
cd..:退回到上一级目录

1、删除关键词所在行

cmd下

进入该文件所在目录

findstr /v /r "关键词" 源文件名.txt>新文件名.txt

eg:findstr /v /r "哈哈" 1.txt>2.txt

源文件:1.txt

1ajsdfihiaushewhafj哈哈
2ajshdfhash哈哈fasfd
3asdfjiqerhhask
4jasdfnhhasdfj
哈哈5ausdhfuiahsdf

新文件:2.txt

3asdfjiqerhhask
4jasdfnhhasdfj

当txt文件很多时,可以批量修改:

 for /f "tokens=*" %i in ('dir/b *.txt') do (findstr /v "哈哈" "%i">temp.txt&move /y temp.txt "%i")

(网上都是两个%,%%i,但是我自己在cmd下使用时,两个出错,一个才行。。。)

 eol=c                  – 指定一个行注释字符,遇到c开头的行就忽略掉。
 skip=n                – 指定在文件开始时忽略的行数。
 delims=xxx         – 指定分隔符。默认是空格和TAB。

 tokens=x,y,m-n   – 指每行的哪一个符号被传递到每个迭代的 for 本身。

                              一句话总结:提取列。

                              通俗讲,共同提取每一行的第m小节的内容。

                              因此,可以用该命令来指定提取文本信息。

                                       tokens=有时表示提取全部。

                                       tokens=m表示提取第m列。

                                       tokens=m,n表示提取第m列和第n列。

                                       tokens=m-n表示提取第m列至第n列。

                                       tokens=*表示删除每行前面的空格。忽略行首的所有空格。

                                       tokens=m*提取第m列以后的所有字符,星号表示剩余的字符。

                                       tokens=m,*提取第m列以后的所有字符,星号表示剩余的字符。

                             输出变量的个数由定义了的tokens决定。

                             在 FOR 语句中显式声明 %%i。使用tokens= 隐式声明%%j %%k。只要不会引起试图声明高于字母“z”或“Z”的某个变量,则使用tokens= 可以指定最多 26 个输出变量。

2、删除空行

cmd下,进入文件所在目录

删除目录下所有txt文件中的空行(子文件夹下页包括):(慎用!!!别问我为什么。。。)

for /R %i in (*.txt) do @findstr . "%i">new.txt&move /y new.txt "%i"

删除某个txt文件中的空行

for /f "delims=" %i in (1.txt) do >>2.txt echo %i

3、删除某个目录下的所有txt文件

假设要删除的文件位于D盘的“测试”目录下的以的txt为扩展名的文件:

运行:cmd

在命令行提示窗口

输入D: 回车

就转到了D盘

再输入cd 测试 回车

就进入了“测试”目录

输入del /f /s /q *.txt 回车

删除某个固定名称的txt:例如1.txt

del /f /s /q 1.txt

这样目录下所有1.txt都被删除(包括子文件夹下的)

4、批量重命名

方法(1)利用bat文件

新建一个txt 文件:

@echo off
setlocal enabledelayedexpansion
set var=0  
echo %var%
set /a i = i + var
for  %%x in (*) do (
    if not "%%x"=="rename.bat" (
        set /a i+=1    
        rename "%%x" "!i!.jpg"     
    )
)
pause

重命名为:rename.bat

把这个文件和你需要重命名的所有文件放在同一个目录下,双击打开运行即可

运行结果:得到1.jpg,2.jpg,3.jpg...........

注意:这里是里面所有文件都被重命名

方法(2)dos命令

首先,全选所有文件之后修改某一个文件的名字(如改成temp),确定后其余的文件名就自动改成了temp (1),temp (2),temp (3)(后缀省略)......注意:temp和(1)之间有个空格

 for /L %t in (1,1,3) do ren "temp (%t).jpg" "20170825_%t.jpg"

结果:图片名字修改为:20170825_1.jpg,20170825_2.jpg,20170825_3.jpg,

%t是循环变量,(1,1,3)的意思是(起始,步长,终止),终止基本就是所需要重命名文件的个数

注意:temp和(%t).jpg之间有个空格

原文地址:https://www.cnblogs.com/zhouerba/p/7418393.html