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里disconnect UDP套接字的方法
Apr 23 Python
python实现数值积分的Simpson方法实例分析
Jun 05 Python
python导入时小括号大作用
Jan 10 Python
Python3.4实现远程控制电脑开关机
Feb 22 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
Dec 04 Python
Python文件常见操作实例分析【读写、遍历】
Dec 10 Python
Python解析命令行读取参数之argparse模块
Jul 26 Python
python实现堆排序的实例讲解
Feb 21 Python
Python 生成VOC格式的标签实例
Mar 10 Python
python中pyqtgraph知识点总结
Jan 26 Python
Python的collections模块真的很好用
Mar 01 Python
总结三种用 Python 作为小程序后端的方式
May 02 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读取本地文件常用函数(fopen与file_get_contents)
2013/09/09 PHP
关于JSON以及JSON在PHP中的应用技巧
2013/11/27 PHP
Laravel 5框架学习之Laravel入门和新建项目
2015/04/07 PHP
PHP上传文件参考配置大文件上传
2015/12/16 PHP
php框架CodeIgniter主从数据库配置方法分析
2018/05/25 PHP
PHP实现爬虫爬取图片代码实例
2021/03/03 PHP
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
jquery下动态显示jqGrid以及jqGrid的属性设置容易出现问题的解决方法
2010/10/22 Javascript
javascript包装对象实例分析
2015/03/27 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
JS实现星星评分功能实例代码(两种方法)
2016/06/09 Javascript
js创建对象几种方式的优缺点对比
2016/09/28 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
2017/02/08 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
2017/06/01 Javascript
vue弹窗消息组件的使用方法
2020/09/24 Javascript
如何把vuejs打包出来的文件整合到springboot里
2018/07/26 Javascript
JavaScript模拟实现自由落体效果
2018/08/28 Javascript
vue ajax 拦截原理与实现方法示例
2019/11/29 Javascript
Vue中的this.$options.data()和this.$data用法说明
2020/07/26 Javascript
python连接mongodb操作数据示例(mongodb数据库配置类)
2013/12/31 Python
python定时执行指定函数的方法
2015/05/27 Python
python实现数据图表
2017/07/29 Python
Python使用numpy模块创建数组操作示例
2018/06/20 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
学习Python需要哪些工具
2020/09/04 Python
Python3读写ini配置文件的示例
2020/11/06 Python
BRASTY捷克:购买香水、化妆品、手袋和手表
2017/07/12 全球购物
关于幼儿的自我评价
2013/12/18 职场文书
翻译学院毕业生自荐书
2014/02/02 职场文书
工程质量月活动方案
2014/02/19 职场文书
2014年节能减排工作总结
2014/12/06 职场文书
无保留意见审计报告
2015/06/05 职场文书
2019财务管理制度最新范本!
2019/07/09 职场文书
在前女友婚礼上,用Python破解了现场的WIFI还把名称改成了
2021/05/28 Python
浅谈redis整数集为什么不能降级
2021/07/25 Redis