bat和python批量重命名文件的实现代码

作者:mdxy-dxy 时间:2023-10-07 02:11:53 

最近从某网站下载了一批文档,但是文件是用数字串命名的文档(很多图书馆都这样吧),现在我也下载完了这些文件,也有这些文件的列表,就是不能一个一个的把文件给重命名吧所以从网上找了这几个脚本。

一、使用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格式,其他格式没事测试,

前面是列表文档名含后缀(就是网站上文件名,一串数字#或者字母什么的),空一格,然后是文档的真名(不带后缀)

标签:批量重命名,bat,python
0
投稿

猜你喜欢

  • ASP.NET2.0数据库入门之SqlDataSource

    2024-01-24 08:38:12
  • 浅谈对python中if、elif、else的误解

    2021-04-04 00:57:57
  • 如何利用Python将html转为pdf、word文件

    2022-07-27 10:36:55
  • 一篇文章带你了解python标准库--sys模块

    2022-04-25 10:21:37
  • 关于ASP中脚本执行顺序的讲解

    2008-11-04 12:02:00
  • 对pandas写入读取h5文件的方法详解

    2021-01-10 09:11:18
  • python 中文乱码问题深入分析

    2023-06-12 19:04:37
  • Python 遍历列表里面序号和值的方法(三种)

    2022-11-29 14:01:06
  • 精心整理总结的Python自动化测试面试题

    2022-07-27 08:13:00
  • Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例

    2023-07-09 00:11:24
  • Python最基本的数据类型以及对元组的介绍

    2022-03-26 07:04:07
  • Python数字图像处理代数之加减乘运算

    2023-03-20 07:51:26
  • mysql中redo log和 binlog的区别

    2024-01-14 12:43:52
  • Python lxml库的简单介绍及基本使用讲解

    2022-09-12 07:40:55
  • python opencv实现图像矫正功能

    2022-05-22 17:00:13
  • python格式化字符串的实战教程(使用占位符、format方法)

    2023-02-01 22:20:21
  • 十个Golang开发中应该避免的错误总结

    2024-04-25 15:05:14
  • 把网页中的电话号码生成图片的ASP程序

    2008-11-07 16:12:00
  • Python3中.whl文件创建及使用

    2022-11-05 00:17:50
  • 微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能

    2024-04-18 10:03:54
  • asp之家 网络编程 m.aspxhome.com