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创建日历实例
Aug 21 Python
图文讲解选择排序算法的原理及在Python中的实现
May 04 Python
python中使用print输出中文的方法
Jul 16 Python
详解Django中类视图使用装饰器的方式
Aug 12 Python
200行python代码实现2048游戏
Jul 17 Python
python隐藏类中属性的3种实现方法
Dec 19 Python
pytorch实现线性拟合方式
Jan 15 Python
Python中断多重循环的几种方式详解
Feb 10 Python
Python列表解析操作实例总结
Feb 26 Python
pycharm软件实现设置自动保存操作
Jun 08 Python
深入理解Pytorch微调torchvision模型
Nov 11 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作的文本留言本的例子(一)
2006/10/09 PHP
xml在joomla表单中的应用详解分享
2012/07/19 PHP
深入php list()函数的详解
2013/06/05 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
php实现的生成排列算法示例
2019/07/25 PHP
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
js实现简单鼠标跟随效果的方法
2015/04/10 Javascript
jQuery鼠标事件汇总
2015/08/30 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
简单理解vue中el、template、replace元素
2016/10/27 Javascript
jquery实现简单的瀑布流布局
2016/12/11 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
从0到1搭建element后台框架优化篇(打包优化)
2019/05/12 Javascript
js实现点击生成随机div
2020/01/16 Javascript
JS加载解析Markdown文档过程详解
2020/05/19 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
[02:44]2014DOTA2 国际邀请赛中国区预选赛 大神红毯秀
2014/05/25 DOTA
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
使用Python的内建模块collections的教程
2015/04/28 Python
举例详解Python中yield生成器的用法
2015/08/05 Python
在Python中通过threading模块定义和调用线程的方法
2016/07/12 Python
python实现扫描日志关键字的示例
2018/04/28 Python
python和shell获取文本内容的方法
2018/06/05 Python
python3解析库lxml的安装与基本使用
2018/06/27 Python
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
Python Django给admin添加Action的方法实例详解
2019/04/29 Python
在django中图片上传的格式校验及大小方法
2019/07/28 Python
利用python在大量数据文件下删除某一行的例子
2019/08/21 Python
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
师德师风剖析材料
2014/09/30 职场文书
教师个人工作总结范文2014
2014/11/10 职场文书
Spark SQL 2.4.8 操作 Dataframe的两种方式
2021/10/16 SQL Server