最近從某網站下載了一批文檔,但是文件是用數字串命名的文檔(很多圖書館都這樣吧),現在我也下載完了這些文件,也有這些文件的列表,就是不能一個一個的把文件給重命名吧所以從網上找了這幾個腳本。
一、使用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
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
