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调用java的Webservice示例
Mar 10 Python
简单上手Python中装饰器的使用
Jul 12 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
Dec 24 Python
如何处理Python3.4 使用pymssql 乱码问题
Jan 08 Python
详解Python如何获取列表(List)的中位数
Aug 12 Python
如何将python中的List转化成dictionary
Aug 15 Python
Django实战之用户认证(用户登录与注销)
Jul 16 Python
Python判断有效的数独算法示例
Feb 23 Python
解决Django migrate不能发现app.models的表问题
Aug 31 Python
python字符串反转的四种方法详解
Dec 02 Python
Python3 实现减少可调用对象的参数个数
Dec 20 Python
Python实现ElGamal加密算法的示例代码
Jun 19 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批量缩放图片的代码[ini参数控制]
2011/02/11 PHP
ajax在joomla中的原生态应用代码
2012/07/19 PHP
PHP Directory 函数的详解
2013/03/07 PHP
yii插入数据库防并发的简单代码
2017/05/27 PHP
IE 上下滚动展示模仿Marquee机制
2009/12/20 Javascript
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
30个最好的jQuery 灯箱插件分享
2011/04/25 Javascript
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
jquery中ajax学习笔记3
2011/10/16 Javascript
不用锚点也可以平滑滚动到页面的指定位置实现代码
2013/05/08 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
2013/06/06 Javascript
js实现根据身份证号自动生成出生日期
2015/12/15 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
layui之select的option叠加问题的解决方法
2018/03/08 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
2019/04/09 Javascript
vue+springboot图片上传和显示的示例代码
2020/02/14 Javascript
[51:10]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
Python的Django框架中URLconf相关的一些技巧整理
2015/07/18 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
2017/07/30 Python
关于Python如何避免循环导入问题详解
2017/09/14 Python
python实现密码验证合格程序的思路详解
2020/06/01 Python
Python API 操作Hadoop hdfs详解
2020/06/06 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
实习生个人的自我评价
2013/12/08 职场文书
中文师范生自荐信
2014/01/30 职场文书
药品促销活动方案
2014/02/14 职场文书
员工考核评语大全
2014/04/26 职场文书
我的未来不是梦演讲稿
2014/09/02 职场文书
2014年乡镇卫生院工作总结
2014/11/24 职场文书
单位考核聘任报告
2015/03/02 职场文书
升职自我推荐信范文
2015/03/25 职场文书
向雷锋同志学习倡议书
2015/04/27 职场文书
SQL写法--行行比较
2021/08/23 SQL Server
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL