bat和python批量重命名文件的实现代码


Posted in Python onMay 19, 2016

最近从某网站下载了一批文档,但是文件是用数字串命名的文档(很多图书馆都这样吧),现在我也下载完了这些文件,也有这些文件的列表,就是不能一个一个的把文件给重命名吧所以从网上找了这几个脚本。

一、使用bat脚本(windows系统默认可用)

打开记事本,将这些代码写入记事本,另存为xx.bat文件(注意后缀名,很多小白保存成了xx.bat.txt,因为txt是隐藏的,以为不行)

@echo off
for /r “d:\pdf” %%a in (*.pdf) do (
  for /f “tokens=1,2 delims= ” %%b in (1.txt) do ( 
  if “%%~nxa”==”%%b” ren “%%a” “%%c.pdf”
  )
)

要求文件放在d:/pdf文件夹下,文件后缀为.pdf,文件列表放在1.txt下面,txt保存为微软下的默认ANSI格式就好,内部内容格式为以下格式:

ts001003.pdf 世界科技全景百卷书(3)近代科技
ts001004.pdf 世界科技全景百卷书(4)蒸汽机带来的革命
ts001005.pdf 世界科技全景百卷书(5)现代科技

有需要的可以适当修改。

二、使用python脚本(windows系统需安装python 3.50 编译软件,约30M,linux估计需要升级python到3.50)

这个脚本是我花了好几个小时写的一个脚本(虽然学了好久编程,但是要流畅的写一个比较好的还是不顺手)
打开记事本,将这些代码写入记事本,另存为xx.bat文件(注意后缀名,很多小白保存成了xx.bat.txt,因为txt是隐藏的,以为不行)

#!/bin/env python
# -*- coding: utf-8 -*-
"""从某网站下载了一批文档,但是文件是用数字串命名的文档(很多图书馆都这样吧),
也有文档列表,所以写了一个脚本来重命名批文件

"""
__author__ = 'rublog'
import os

#1.txt文档要求每个文档一行,保存的时候必须为ANSI格式,前面是列表文档名含后缀(就是网站上文件名,一串数字
#或者字母什么的),空一格,然后是文档的真名(不带后缀)
#get_list这个从1.txt文本文件中一行一行的读取文件,去掉换行符,然后调用doc_rename
#函数
def get_list():
  #尝试不同的编码来自知乎 十五
  #https://www.zhihu.com/question/30070752/answer/46684320
  decode_list=["utf-8",'gb18030', 'ISO-8859-2','gb2312',"gbk","Error" ]#编码集
  #GBK不如GB18030覆盖得好,容易出错,故首先尝试GB18030。
  for k in decode_list:#编码集循环
    try:
      book_list = open('1.txt', encoding=k)
      #打开路径中的文本
      line = book_list.readline()
      while line:
        if os.name == 'nt':
          line = line.strip('\r\n')
        else:
          line = line.strip('\n')
        doc_rename(line)
        line = book_list.readline()
      break#打开路径成功跳出编码匹配
    except:
      if k == "Error":#如果碰到这个程序终止运行
        print("had no way to decode")
        raise Exception("%s had no way to decode"%directions)
      continue
#重命名,构造完整的路径和后缀
def doc_rename(book_list_line):
  try:
    name_list = book_list_line.split(' ')
    list_name = name_list[0]
    cool_list = list_name.split('.')
    ext = cool_list[-1]
    current_folder = os.getcwd()
    real_name = name_list[1]
    real_name = os.path.join(current_folder, real_name)
    real_name_ext = real_name+'.'+ext
    os.rename(os.path.join(current_folder, list_name), real_name_ext)
    print('success')
  except:
    pass
  return 0
#据说高手都会写的主函数
if __name__ == '__main__':
  get_list()

要求文件放在普通文件夹下,文件后缀可以任意(后缀要和txt内的列表后缀一样),文件列表放在1.txt下面,txt保存为微软下的默认ANSI格式或者UTF无BOM格式就好,内部内容格式为以下格式:

ts001003.pdf 世界科技全景百卷书(3)近代科技

ts001004.pdf 世界科技全景百卷书(4)蒸汽机带来的革命

ts001005.pdf 世界科技全景百卷书(5)现代科技

1.txt文档要求每个文档一行,保存的时候必须为ANSI或者UTF无BOM格式,其他格式没事测试,

前面是列表文档名含后缀(就是网站上文件名,一串数字#或者字母什么的),空一格,然后是文档的真名(不带后缀)

为方便大家使用特提供打包下载:
•读取txt重命名列表文件.zip

Python 相关文章推荐
Python中datetime常用时间处理方法
Jun 15 Python
浅谈Python中用datetime包进行对时间的一些操作
Jun 23 Python
Python读取mat文件,并保存为pickle格式的方法
Oct 23 Python
使用python将图片按标签分入不同文件夹的方法
Dec 08 Python
Python中文件的写入读取以及附加文字方法
Jan 23 Python
树莓派与PC端在局域网内运用python实现即时通讯
Jun 22 Python
Python内存管理实例分析
Jul 10 Python
Python递归调用实现数字累加的代码
Feb 25 Python
使用npy转image图像并保存的实例
Jul 01 Python
Python读取yaml文件的详细教程
Jul 21 Python
Python下opencv库的安装过程及问题汇总
Jun 11 Python
Python中time与datetime模块使用方法详解
Mar 31 Python
批处理与python代码混合编程的方法
May 19 #Python
python实现汉诺塔递归算法经典案例
Mar 01 #Python
python中list列表的高级函数
May 17 #Python
python模拟Django框架实例
May 17 #Python
python采用django框架实现支付宝即时到帐接口
May 17 #Python
图文详解WinPE下安装Python
May 17 #Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
May 17 #Python
You might like
php实现字符串首字母转换成大写的方法
2015/03/17 PHP
JavaScript DOM学习第八章 表单错误提示
2010/02/19 Javascript
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
2012/11/14 Javascript
jQuery图片的展开和收缩实现代码
2013/04/16 Javascript
使用js画图之画切线
2015/01/12 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
2015/05/26 Javascript
在浏览器中打开或关闭JavaScript的方法
2015/06/03 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
javascript实现遮罩层动态效果实例
2019/05/14 Javascript
使用layui实现树形结构的方法
2019/09/20 Javascript
解决vue-cli 打包后自定义动画未执行的问题
2019/11/12 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
python操作sqlite的CRUD实例分析
2015/05/08 Python
Python的requests网络编程包使用教程
2016/07/11 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
2017/01/28 Python
Pandas探索之高性能函数eval和query解析
2017/10/28 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
python selenium自动上传有赞单号的操作方法
2018/07/05 Python
python实现LRU热点缓存及原理
2019/10/29 Python
python中Lambda表达式详解
2019/11/20 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
python numpy矩阵信息说明,shape,size,dtype
2020/05/22 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
巴西最大的家电和百货零售商:Casas Bahia
2016/11/22 全球购物
在线购买世界上最好的酒:BoozeBud
2018/06/07 全球购物
中学实习教师自我鉴定
2013/12/12 职场文书
人事档案接收函
2014/01/12 职场文书
读书活动总结范文
2014/04/26 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
工厂车间标语
2014/06/19 职场文书
岗位说明书标准范本
2014/07/30 职场文书
开学典礼观后感
2015/06/15 职场文书
Python开发五子棋小游戏
2022/04/28 Python