>  기사  >  백엔드 개발  >  Bat 및 Python에서 일괄 이름 바꾸기 파일 구현

Bat 및 Python에서 일괄 이름 바꾸기 파일 구현

高洛峰
高洛峰원래의
2017-03-02 16:18:381615검색

최근에 웹사이트에서 일련의 문서를 다운로드했는데 파일 이름이 숫자 문자열로 지정되어 있습니다(많은 라이브러리가 이와 같습니다). 이제 이 파일을 다운로드했는데 이러한 파일 목록도 있지만 그럴 수 없습니다. 하나씩 나열해 보겠습니다. 파일 이름을 바꾸겠습니다. 그래서 이 스크립트는 인터넷에서 찾았습니다.

1. bat 스크립트 사용(Windows 시스템에서는 기본적으로 사용 가능)

메모장을 열고 해당 코드를 메모장에 작성한 후 xx.bat로 저장합니다. file (접미사 이름에 주의하세요. 많은 초보자들은 txt가 숨겨져 있어서 작동하지 않을 거라고 생각하기 때문에 xx.bat.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를 Microsoft에서 기본 ANSI 형식으로 저장하면 됩니다. 내용 형식은 다음과 같습니다.

ts001003.pdf 세계 과학기술 전경(100권) (3) 현대기술
ts001004.pdf 세계 과학기술 전경(100권) (4) 증기기관이 가져온 혁명
ts001005.pdf 100권으로 담은 세계 과학기술의 전경 (5) 현대기술

필요에 따라 적절히 수정 가능합니다.


2. 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():
  #尝试不同的编码来自知乎 十五
  #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()

파일이 필요합니다. 일반 폴더에서 파일 접미사는 임의로 지정할 수 있습니다(접미사는 txt의 목록 접미사와 동일해야 함). txt는 1.txt입니다. BOM 형식 없이 Microsoft 또는 UTF의 기본 ANSI 형식으로 저장됩니다. 내부 콘텐츠 형식은


ts001003.pdf One Hundred Volumes of World Science and Technology입니다. 파노라마(3) 현대과학과 기술

ts001004.pdf 세계 과학기술 백권 파노라마(4) 증기기관이 가져온 혁명

ts001005.pdf 세계 과학기술 백권 세계 과학 기술 파노라마(5) 현대 기술


1.txt 문서는 문서당 한 줄이 필요하며 BOM 형식이 없는 ANSI 또는 UTF로 저장해야 합니다.

앞에는 접미사(즉, 웹사이트의 파일 이름, 숫자 # 또는 문자 등의 문자열), 공백, 실제 이름(. 접미사 없음)


bat 및 python에서 일괄 이름 바꾸기 파일 구현과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.