发布网友 发布时间:2022-04-21 10:06
共5个回答
懂视网 时间:2022-05-11 00:24
最近从某网站下载了一批文档,但是文件是用数字串命名的文档(很多图书馆都这样吧),现在我也下载完了这些文件,也有这些文件的列表,就是不能一个一个的把文件给重命名吧所以从网上找了这几个脚本。一、使用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(): #尝试不同的编码来自知乎 十五 #http://www.gxlcms.com/ 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(' ') else: line = line.strip(' ') 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批量重命名文件的实现相关文章请关注PHP中文网!
热心网友 时间:2022-05-10 21:32
方法/步骤-重命名文件夹
1
以几个新建文件夹为例吧
2
新建一个txt文本文档,文件名任意
3
编辑这个txt文本文件输入以下字符
set a=1000
setlocal EnableDelayedExpansion
FOR /f "tokens=*" %%i IN ('dir /a:d /b') DO (
set /A a+=1
ren "%%i" "电影!a!"
)
然后保存
4
保存后更改文件扩展名为bat,有提示选“是”
5
双击运行这个bat批处理文件,稍一延迟文件夹就都已全改名啦
6
代码主要注意以下两处,可进行随意修改
7
这两处修改之后,运行后重命名文件夹的名称也随之变化
END
方法/步骤2-重命名文件
以重命名txt文件为例,也是先新建bat文件,其中代码如下
@echo off
set a=00
setlocal EnableDelayedExpansion
for %%n in (*.txt) do (
set /A a+=1
ren "%%n" "小说!a!.txt"
)
注意红色标记的4处地方,可进行更改
双击执行后效果如下
热心网友 时间:2022-05-10 22:50
首先我们新建一个txt文本文档,右键空白地方(这里是桌面也可以是任何文件夹内)——新建——文本文档
双击打开刚才建立的文本文档,将以下代码复制到文本内
@echo
off
for
/f
"delims="
%%a
in
('dir
/b/a-d/on
*.*')
do
echo
%%a
>>当前文件夹内文件名.txt
修改我们想要得到的文本文档名——将代码内“当前文件夹内文件名”改成自己想要的,比如我们要得到文档名为mp3目录,则用“mp3目录”代替“当前文件夹内文件名”,之后点击保存
关闭文档,修改我们我们新建的文档的名称(不修改也可以,修改方便自己寻早和记忆),这里修改成“利用bat批处理来批量提取文件名”
将文档的拓展名.txt修改成.bat(不知道方法的可以百度修改文件拓展名),修改的时候会提示“如果改变文件扩展名,可能会导致文件不可用”,点击确认即可,这时候我们就得到我们想要的bat批处理命令了
将批处理文件复制或者剪切到要提取文件名的文件夹内(如小编的“【心理fm】【0900期-0999期】”文件夹内),双击或者右键打开bat批处理文件
这时候文件夹内就会生成一个“mp3目录”的文档(前面取的名字,如果需要改变可以将拓展名改回txt修改后再改成bat即可),双击打开,里面记录的便是我们需要的文件名了
热心网友 时间:2022-05-11 00:24
楼主会写bat命令吗?不会的话就直接用一个叫“快改助手”的网页工具来帮助你快速生成bat命令文件来实现批量修改文件名,这个网站上有教程的。
热心网友 时间:2022-05-11 02:16
瑞云1肖尹宪