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中定义结构体的方法
Mar 04 Python
探索Python3.4中新引入的asyncio模块
Apr 08 Python
Python类定义和类继承详解
May 08 Python
python判断字符串是否是json格式方法分享
Nov 07 Python
python绘制直线的方法
Jun 30 Python
Python异常处理操作实例详解
Aug 28 Python
python切片(获取一个子列表(数组))详解
Aug 09 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
Aug 30 Python
Python openpyxl模块原理及用法解析
Jan 19 Python
python离线安装外部依赖包的实现
Feb 13 Python
利用python实现逐步回归
Feb 24 Python
浅谈matplotlib中FigureCanvasXAgg的用法
Jun 16 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 Smarty模板生成html文档的方法
2010/04/12 PHP
PHP 文件缓存的性能测试
2010/04/25 PHP
php5.3 goto函数介绍和示例
2014/03/21 PHP
PHP中Session引起的脚本阻塞问题解决办法
2014/04/08 PHP
php实现当前页面点击下载文件的简单方法
2016/09/22 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
2018/05/12 PHP
JavaScript For Beginners(转载)
2007/01/05 Javascript
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
Javascript常用小技巧汇总
2015/06/24 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
深入浅析search 搜索框的写法
2016/08/02 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
2017/10/14 jQuery
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
vue.js实现只弹一次弹框
2018/01/29 Javascript
使用selenium抓取淘宝的商品信息实例
2018/02/06 Javascript
vue实现同一个页面可以有多个router-view的方法
2018/09/20 Javascript
微信小程序实现搜索功能
2020/03/10 Javascript
可拖拽组件slider.js使用方法详解
2020/12/04 Javascript
python中lambda与def用法对比实例分析
2015/04/30 Python
Python3中使用PyMongo的方法详解
2017/07/28 Python
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
python3 kmp 字符串匹配的方法
2018/07/07 Python
Django实现表单验证
2018/09/08 Python
python可视化实现代码
2019/01/15 Python
Python list和str互转的实现示例
2020/11/16 Python
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
信息科学与技术专业求职信范文
2014/02/20 职场文书
员工教育培训协议书
2014/09/27 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
校运会班级霸气口号
2015/12/24 职场文书
详解redis在微服务领域的贡献
2021/10/16 Redis