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标准库os.path包、glob包使用实例
Nov 25 Python
Python使用chardet判断字符编码
May 09 Python
Python的randrange()方法使用教程
May 15 Python
Python日志模块logging基本用法分析
Aug 23 Python
python对视频画框标记后保存的方法
Dec 07 Python
pyqt5 QProgressBar清空进度条的实例
Jun 21 Python
python中PS 图像调整算法原理之亮度调整
Jun 28 Python
Django ORM 查询管理器源码解析
Aug 05 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
Jan 12 Python
Python下利用BeautifulSoup解析HTML的实现
Jan 17 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
Feb 13 Python
浅谈python量化 双均线策略(金叉死叉)
Jun 03 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 引用(&)详解
2009/11/20 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
2014/12/17 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
php反射学习之依赖注入示例
2019/06/14 PHP
js限制文本框只能输入数字(正则表达式)
2012/07/15 Javascript
JS 添加网页桌面快捷方式的代码详细整理
2012/12/27 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
js获取客户端操作系统类型的方法【测试可用】
2016/05/27 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
2016/12/02 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
Vue Router的懒加载路径的解决方法
2018/06/21 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
js重写alert事件(避免alert弹框标题出现网址)
2020/12/04 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
pygame学习笔记(3):运动速率、时间、事件、文字
2015/04/15 Python
python生成器表达式和列表解析
2016/03/10 Python
python中defaultdict的用法详解
2017/06/07 Python
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
python多进程读图提取特征存npy
2019/05/21 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
2019/10/28 Python
Python如何爬取qq音乐歌词到本地
2020/06/01 Python
安装pyinstaller遇到的各种问题(小结)
2020/11/20 Python
html5调用摄像头功能的实现代码
2018/05/07 HTML / CSS
Carolina工作鞋官网:Carolina Footwear
2019/03/14 全球购物
比较一下entity bean和session bean
2013/12/27 面试题
药物学专业学生的自我评价
2013/10/27 职场文书
竞选宣传委员演讲稿
2014/05/24 职场文书
董事长助理岗位职责
2015/02/11 职场文书
党支部季度考核意见
2015/06/02 职场文书
解析python中的jsonpath 提取器
2022/01/18 Python
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL