Maison  >  Article  >  développement back-end  >  Implémentation de fichiers de renommage par lots en bat et python

Implémentation de fichiers de renommage par lots en bat et python

高洛峰
高洛峰original
2017-03-02 16:18:381620parcourir

J'ai récemment téléchargé un lot de documents à partir d'un site Web, mais les fichiers sont nommés avec des chaînes numériques (de nombreuses bibliothèques sont comme ça. Maintenant, j'ai téléchargé ces fichiers, et il existe également une liste de ces fichiers, mais ils ne le peuvent pas). être répertoriés un par un. Renommons le fichier, j'ai donc trouvé ces scripts sur Internet.

1. Utilisez le script bat (disponible par défaut dans le système Windows)

Ouvrez le bloc-notes, écrivez ces codes dans le bloc-notes et enregistrez-le sous xx.bat fichier (Faites attention au nom du suffixe. De nombreux novices l'enregistrent sous xx.bat.txt car le txt est caché et pensent que cela ne fonctionnera pas)

@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”
  )
)

Nécessite que le fichier soit placé Dans le dossier d:/pdf, le suffixe du fichier est .pdf et la liste des fichiers est placée sous 1.txt Enregistrez simplement le txt comme format ANSI par défaut sous Microsoft. le format du contenu interne est le suivant :

ts001003 .pdf Une vue panoramique de la science et de la technologie mondiales en cent volumes (3) Technologie moderne
ts001004.pdf Une vue panoramique de la science et de la technologie mondiales en cent volumes (4) La révolution provoquée par les machines à vapeur
ts001005.pdf Une vue panoramique de la science et de la technologie mondiales en cent volumes (5) La technologie moderne

Peut être modifiée de manière appropriée si nécessaire.


2. Utilisez un script Python (le système Windows doit installer le logiciel de compilation Python 3.50, environ 30 Mo, on estime que Linux doit mettre à niveau Python vers 3.50)

Ce script est que j'ai passé plusieurs heures à écrire un script (même si j'ai appris la programmation depuis longtemps, j'ai encore du mal à en écrire un bon couramment)
Ouvrez le Bloc-notes, écrivez ces codes dans le Bloc-notes et enregistrez-le sous xx. bat File (faites attention au nom du suffixe, de nombreux novices l'enregistrent sous xx.bat.txt, car le txt est caché, donc ils pensent que cela ne fonctionnera pas)

#!/bin/env python
# -*- coding: utf-8 -*-
"""从某网站下载了一批文档,但是文件是用数字串命名的文档(很多图书馆都这样吧),
也有文档列表,所以写了一个脚本来重命名批文件

"""
__author__ = 'rublog'
import os

#1.txt文档要求每个文档一行,保存的时候必须为ANSI格式,前面是列表文档名含后缀(就是网站上文件名,一串数字
#或者字母什么的),空一格,然后是文档的真名(不带后缀)
#get_list这个从1.txt文本文件中一行一行的读取文件,去掉换行符,然后调用doc_rename
#函数
def get_list():
  #尝试不同的编码来自知乎 十五
  #http://www.php.cn/
  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()

Fichier requis Placez-le dans un dossier normal. Le suffixe du fichier peut être arbitraire (le suffixe doit être le même que le suffixe de la liste dans le txt). La liste des fichiers est placée sous 1.txt. est enregistré comme format ANSI par défaut sous Microsoft ou UTF sans format BOM Interne Le format du contenu est le suivant :


ts001003.pdf Le panorama en cent volumes de la science mondiale et. Technologie (3) Science et technologie modernes

ts001004.pdf Le panorama en cent volumes de la science et de la technologie mondiales (4) La révolution apportée par la machine à vapeur

ts001005.pdf Le panorama en cent volumes of World Science and Technology (5) Modern Technology


Le document 1.txt nécessite une ligne par document, lors de l'enregistrement. Il doit être au format ANSI ou UTF sans format BOM. Les autres formats peuvent être testés. 🎜>

est précédé d'une liste de noms de fichiers comprenant des suffixes (c'est-à-dire les noms de fichiers sur le site Web, une chaîne de chiffres # ou de lettres ou quelque chose), un espace vide, puis le vrai nom du document ( sans suffixe)


Pour plus d'articles liés à l'implémentation des fichiers de renommage par lots en bat et python, veuillez faire attention au site Web PHP chinois !



Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn