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中的JSON模块
Apr 08 Python
Linux 下 Python 实现按任意键退出的实现方法
Sep 25 Python
python 创建弹出式菜单的实现代码
Jul 11 Python
Python复数属性和方法运算操作示例
Jul 21 Python
python针对excel的操作技巧
Mar 13 Python
python dict 相同key 合并value的实例
Jan 21 Python
解决pycharm 安装numpy失败的问题
Dec 05 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
Feb 04 Python
Python自动采集微信联系人的实现示例
Feb 28 Python
python 动态绘制爱心的示例
Sep 27 Python
python链表类中获取元素实例方法
Feb 23 Python
TensorFlow中tf.batch_matmul()的用法
Jun 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 sprintf()函数让你的sql操作更安全
2008/07/23 PHP
PHP Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
PHP中图片等比缩放的实例
2013/03/24 PHP
Thinkphp实现MySQL读写分离操作示例
2014/06/25 PHP
PHP中feof()函数实例测试
2014/08/23 PHP
php处理单文件、多文件上传代码分享
2016/08/24 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
js实现非常简单的焦点图切换特效实例
2015/05/07 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
2017/05/08 Javascript
react router 4.0以上的路由应用详解
2017/09/21 Javascript
关于Vue组件库开发详析
2018/07/01 Javascript
深入分析element ScrollBar滚动组件源码
2019/01/22 Javascript
详解在Angular4中使用ng2-baidu-map的方法
2019/06/19 Javascript
使用vue实现各类弹出框组件
2019/07/03 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
2019/10/24 Javascript
python实现无证书加密解密实例
2014/10/27 Python
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
Python编程之gui程序实现简单文件浏览器代码
2017/12/08 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
Django model select的多种用法详解
2019/07/16 Python
Python内建序列通用操作6种实现方法
2020/03/26 Python
毕业生幼师求职自荐信
2013/10/01 职场文书
培训主管岗位职责
2014/02/01 职场文书
超市中秋节促销方案
2014/03/21 职场文书
岗位说明书怎么写
2014/07/30 职场文书
岳麓书院导游词
2015/02/03 职场文书
导游词之上海豫园
2019/10/24 职场文书
怎么禁用Windows 11快照布局? win11不使用快照布局的技巧
2021/11/21 数码科技
十大公认最好看的动漫:《咒术回战》在榜,《钢之炼金术师》第一
2022/03/18 日漫