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实现的二叉树算法和kmp算法实例
Apr 25 Python
Python标准库之随机数 (math包、random包)介绍
Nov 25 Python
python可视化实现代码
Jan 15 Python
Python中numpy模块常见用法demo实例小结
Mar 16 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
Jul 31 Python
解决python明明pip安装成功却找不到包的问题
Aug 28 Python
详解python中docx库的安装过程
Nov 08 Python
pycharm激活码快速激活及使用步骤
Mar 12 Python
如何在pycharm中安装第三方包
Oct 27 Python
python获取天气接口给指定微信好友发天气预报
Dec 28 Python
python四种出行路线规划的实现
Jun 23 Python
Python可视化神器pyecharts之绘制箱形图
Jul 07 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打印输出棋盘的实现方法
2014/12/23 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
JavaScript 在各个浏览器中执行的耐性
2009/04/06 Javascript
Javascript 获取字符串字节数的多种方法
2009/06/02 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
js 动态修改css文件用到了cssRule
2014/08/20 Javascript
jQuery圆形统计图开发实例
2015/01/04 Javascript
JavaScript数据类型判定的总结笔记
2015/07/31 Javascript
深入理解MVC中的时间js格式化
2016/05/19 Javascript
Bootstrap插件全集
2016/07/18 Javascript
js实现数组和对象的深浅拷贝
2017/09/30 Javascript
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
Vue $attrs & inheritAttr实现button禁用效果案例
2020/12/07 Vue.js
[06:24]DOTA2 2015国际邀请赛中国区预选赛第二日TOP10
2015/05/27 DOTA
Python读取本地文件并解析网页元素的方法
2018/05/21 Python
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
2020/02/07 Python
python传到前端的数据,双引号被转义的问题
2020/04/03 Python
Python Charles抓包配置实现流程图解
2020/09/29 Python
Python模拟键盘输入自动登录TGP
2020/11/27 Python
傲盾软件面试题
2015/08/17 面试题
应届生的求职推荐信范文
2013/11/30 职场文书
小学模范班主任事迹材料
2014/05/13 职场文书
信电学院毕业生自荐书
2014/05/24 职场文书
欢度春节标语
2014/07/01 职场文书
新员工入职欢迎词
2015/01/23 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
高中班主任寄语
2019/06/21 职场文书
Nginx location 和 proxy_pass路径配置问题小结
2021/09/04 Servers
详解Android中的TimePickerView(时间选择器)的用法
2022/04/30 Java/Android