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自动化工具日志查询分析脚本代码实现
Nov 26 Python
Django中使用group_by的方法
May 26 Python
详解Swift中属性的声明与作用
Jun 30 Python
利用Python生成文件md5校验值函数的方法
Jan 10 Python
python好玩的项目—色情图片识别代码分享
Nov 07 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
Jul 11 Python
Python操作配置文件ini的三种方法讲解
Feb 22 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
python 用户交互输入input的4种用法详解
Sep 24 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
Jan 10 Python
python实例化对象的具体方法
Jun 17 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
Jul 03 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
phpmyadmin 3.4 空密码登录的实现方法
2010/05/29 PHP
php变量范围介绍
2012/10/15 PHP
浅谈PHP值mysql操作类
2016/06/29 PHP
ThinkPHP 3.2.2实现事务操作的方法
2017/05/05 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
JQuery实现用户名无刷新验证的小例子
2013/03/22 Javascript
js动态给table添加/删除tr的方法
2013/08/02 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
基于javascript实现页面加载loading效果
2020/09/15 Javascript
javascript Promise简单学习使用方法小结
2016/05/17 Javascript
原生js实现class的添加和删除简单代码
2016/07/12 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
for循环 + setTimeout 结合一些示例(前端面试题)
2017/08/30 Javascript
详解react服务端渲染(同构)的方法
2017/09/21 Javascript
JS实现百度搜索接口及链接功能实例代码
2018/02/02 Javascript
AngularJS自定义表单验证功能实例详解
2018/08/24 Javascript
微信小程序如何播放腾讯视频的实现
2019/09/20 Javascript
webpack 动态批量加载文件的实现方法
2020/03/19 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
2019/07/22 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
2019/08/17 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
CSS3实现莲花绽放的动画效果
2020/11/06 HTML / CSS
Html5实现单张、多张图片上传功能
2019/04/28 HTML / CSS
怎样从/向数据文件读/写结构
2014/11/23 面试题
计算机应用专业推荐信
2013/11/13 职场文书
社区活动策划方案
2014/08/21 职场文书
党员民主评议自我评价
2014/10/20 职场文书
党的群众路线专项整治方案
2014/11/03 职场文书