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实现倒计时的示例
Feb 14 Python
python脚本实现统计日志文件中的ip访问次数代码分享
Aug 06 Python
python中__call__内置函数用法实例
Jun 04 Python
python django事务transaction源码分析详解
Mar 17 Python
简单的python后台管理程序
Apr 13 Python
python实现机器学习之多元线性回归
Sep 06 Python
python实现微信小程序自动回复
Sep 10 Python
Python+OpenCV图片局部区域像素值处理改进版详解
Jan 23 Python
python 实现交换两个列表元素的位置示例
Jun 26 Python
PyTorch之图像和Tensor填充的实例
Aug 18 Python
Alpine安装Python3依赖出现的问题及解决方法
Dec 25 Python
Python获取字典中某个key的value
Apr 13 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 程序员也要学会使用“异常”
2009/06/16 PHP
php的POSIX 函数以及进程测试的深入分析
2013/06/03 PHP
利用php生成验证码
2017/02/23 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
2019/09/16 PHP
jquery的ajax从纯真网(cz88.net)获取IP地址对应地区名
2009/12/02 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
javascript不同类型数据之间的运算的转换方法
2014/02/13 Javascript
js触发select onchange事件的小技巧
2014/08/05 Javascript
node.js中的fs.futimesSync方法使用说明
2014/12/17 Javascript
JavaScript获取并更改input标签name属性的方法
2015/07/02 Javascript
原生JS实现几个常用DOM操作API实例
2017/01/19 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
2017/04/02 jQuery
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
JS实现调用本地摄像头功能示例
2018/05/18 Javascript
vue内置组件transition简单原理图文详解(小结)
2018/07/12 Javascript
JS 实现获取验证码 倒计时功能
2018/10/29 Javascript
React 全自动数据表格组件——BodeGrid的实现思路
2019/06/12 Javascript
nodejs开发一个最简单的web服务器实例讲解
2020/01/02 NodeJs
Python标准库之Sys模块使用详解
2015/05/23 Python
Python生成随机数组的方法小结
2017/04/15 Python
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
python函数调用,循环,列表复制实例
2020/05/03 Python
python3中for循环踩过的坑记录
2020/12/14 Python
纯css3使用vw和vh实现自适应的方法
2018/02/09 HTML / CSS
html5开发之viewport使用
2013/10/17 HTML / CSS
Html5自定义字体解决方法
2019/10/09 HTML / CSS
Kathmandu英国网站:新西兰户外运动品牌
2017/03/27 全球购物
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
员工自我鉴定范文
2013/10/06 职场文书
演讲比赛策划方案
2014/06/11 职场文书
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
2014年社区教育工作总结
2014/12/02 职场文书
工程部岗位职责
2015/02/10 职场文书
代码复现python目标检测yolo3详解预测
2022/05/06 Python