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 import自定义模块方法
Feb 12 Python
python实现在字符串中查找子字符串的方法
Jul 11 Python
Python线性方程组求解运算示例
Jan 17 Python
Python自动抢红包教程详解
Jun 11 Python
python实现批量文件重命名
Oct 31 Python
在python中利用pycharm自定义代码块教程(三步搞定)
Apr 15 Python
Python 代码调试技巧示例代码
Aug 11 Python
python在CMD界面读取excel所有数据的示例
Sep 28 Python
Django框架请求生命周期实现原理
Nov 13 Python
selenium与xpath之获取指定位置的元素的实现
Jan 26 Python
Python字典和列表性能之间的比较
Jun 07 Python
Python+DeOldify实现老照片上色功能
Jun 21 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 网络开发详解之远程文件包含漏洞
2010/04/25 PHP
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
深入掌握include_once与require_once的区别
2013/06/17 PHP
PHP实现的封装验证码类详解
2013/06/18 PHP
php顺序查找和二分查找示例
2014/03/27 PHP
PHP实现生成唯一编号(36进制的不重复编号)
2014/07/01 PHP
yii2.0实现验证用户名与邮箱功能
2015/12/22 PHP
基于PHP技术开发客服工单系统
2016/01/06 PHP
浅谈ThinkPHP中initialize和construct的区别
2017/04/01 PHP
js GridView 实现自动计算操作代码
2009/03/25 Javascript
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
2010/03/09 Javascript
JS将秒换成时分秒实现代码
2013/09/03 Javascript
点击弹出层效果&弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
2016/05/12 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
2017/03/25 jQuery
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
解决vue 更改计算属性后select选中值不更改的问题
2018/03/02 Javascript
vue的常用组件操作方法应用分析
2018/04/13 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
Python实现字典的遍历与排序功能示例
2017/12/23 Python
python操作excel的包(openpyxl、xlsxwriter)
2018/06/11 Python
NumPy 数组使用大全
2019/04/25 Python
pytz格式化北京时间多出6分钟问题的解决方法
2019/06/21 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
Keras实现将两个模型连接到一起
2020/05/23 Python
Python爬虫分析微博热搜关键词的实现代码
2021/02/22 Python
劲霸男装广告词改编版
2014/03/21 职场文书
银行贷款收入证明
2014/10/17 职场文书
公安个人四风问题对照检查及整改措施
2014/10/28 职场文书
Python标准库之typing的用法(类型标注)
2021/06/02 Python
python 详解turtle画爱心代码
2022/02/15 Python
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers