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基础教程之元组操作使用详解
Mar 25 Python
Python入门篇之正则表达式
Oct 20 Python
Python遍历zip文件输出名称时出现乱码问题的解决方法
Apr 08 Python
举例详解Python中循环语句的嵌套使用
May 14 Python
在Python的Django框架中调用方法和处理无效变量
Jul 15 Python
Python Pillow Image Invert
Jan 22 Python
Python中的 ansible 动态Inventory 脚本
Jan 19 Python
基于Python实现人脸自动戴口罩系统
Feb 06 Python
TensorFlow Autodiff自动微分详解
Jul 06 Python
python爬取代理ip的示例
Dec 18 Python
深入理解Python变量的数据类型和存储
Feb 01 Python
PyTorch device与cuda.device用法
Apr 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
php smarty模版引擎中的缓存应用
2009/12/11 PHP
PHP结合jQuery实现找回密码
2015/07/22 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
form表单中去掉默认的enter键提交并绑定js方法实现代码
2013/04/01 Javascript
jquery实现excel导出的方法
2013/04/04 Javascript
判断一个变量是数组Array类型的方法
2013/09/16 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
最全的Javascript编码规范(推荐)
2016/06/22 Javascript
Vue 动态设置路由参数的案例分析
2018/04/24 Javascript
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
Vue + Element UI图片上传控件使用详解
2019/08/20 Javascript
Vuex modules模式下mapState/mapMutations的操作实例
2019/10/17 Javascript
nodejs脚本centos开机启动实操方法
2020/03/04 NodeJs
请求时token过期自动刷新token操作
2020/09/11 Javascript
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
一百多行python代码实现抢票助手
2018/09/25 Python
python实现顺序表的简单代码
2018/09/28 Python
运用PyTorch动手搭建一个共享单车预测器
2019/08/06 Python
python实现人机猜拳小游戏
2020/02/03 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
python 监控logcat关键字功能
2020/09/04 Python
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
中国医药集团国药在线:国药网
2017/02/06 全球购物
戴尔英国官网:Dell英国
2017/05/27 全球购物
秋季运动会广播稿大全
2014/02/17 职场文书
酒店行政人事部经理职务说明书
2014/02/26 职场文书
高效课堂标语
2014/06/26 职场文书
2014市国税局对照检查材料思想汇报
2014/09/23 职场文书
破坏寝室公物检讨书
2014/11/17 职场文书
教师党员个人总结
2015/02/10 职场文书
幼儿园语言教学反思
2016/02/23 职场文书
Vue.Draggable实现交换位置
2022/04/07 Vue.js