批量重命名一个文件夹中txt文件(批处理命令/python)

法一:利用批处理命令(较麻烦,但是通用)

一、将需要修改的批量文件放到同一个文件夹中。在该文件夹下,新建一个txt文件,并在其中输入DIR *.* /B >LIST.csv


二、把txt文件改成bat,双击运行后生成csv文件

三、第一列是原文件名,在第二列输入新的文件名

【我这里共有100个文件,我用0.csv到99.csv举个例子】

四、在第一行第三列输入="REN "&""""&A1&""""&" "&""""&B1&""""
       也就是要达到【REN"原文件名""新文件名"】的效果(记得后缀)

五、把第三列复制到一个新的txt文件中,(注意编码方式选择ANSI)


六、再把新的txt文件后缀改成bat,然后双击运行即可完成

关于为什么要将后面的txt文件保存为ANSI格式:

Windows的cmd.exe默认编码格式为ANSI,而我们国内使用txt默认编码为UTF-8。
当bat文件编码与当前cmd环境不一致时, 双击执行时就会乱码!

其实ANSI并不是某一种特定的字符编码,而是在不同的系统中,ANSI表示不同的编码。
你的美国同事Bob的系统中ANSI编码其实是ASCII编码(ASCII编码不能表示汉字,所以汉字为乱码),
而你的系统中(“汉字”正常显示)ANSI编码其实是GBK编码,
而韩文系统中(“한국어”正常显示)ANSI编码其实是EUC-KR编码。

如果你的bat文件是UTF-8编码的, 或者是是其他Codepage下创建的, 比如
Windows日语版下创建的bat文件, 保存为ANSI编码时对应cp932, 即Shift-JIS编码
Windows繁体中文版下创建的bat文件, 保存为ANSI编码时对应cp950, 即Big5编码

法二:用python(简便快捷,但是文件名特殊的话可能会报错)

import os

#此代码是将一个文件夹中的txt文件按顺序读取后重命名为1、2、3、4……
#注意:需要新的这些1、2、3、4……名字与旧名字没有重叠,重叠的话会报错

filepath = os.listdir("D:\\")  # 此处用来填写存储有多个txt文件的文件夹地址,注意末尾也要有\\
filepath.sort(key=lambda x: int(x.split('.')[0]))
#上面这句话的作用:假如原本txt文件的名字就是用数字的,这句话是为了使读取顺序按1、2、3,没有这句话的话读取顺序会是1、10、100……读完1开头再读2,以此类推

filename = "D:\\"  # 此处需与上述文件夹地址一致

name_list = []  # 存储旧名字
rename_list = []  # 存储新名字

num = len(filepath)
for i in range(num):#遍历后将新名字对应为其顺序
    name_list.append(filepath[i])
    rename_list.append(str(i)+'.csv')

#这里是为了保证是字符类型的变量
old_name = '1'
new_name = '1'

#遍历重命名
for i in range(num):
    old_name = name_list[i]
    new_name = rename_list[i]
    os.rename(filename+old_name, filename+new_name)


版权声明:本文为Coral__原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。