|
|
发表于 2022-7-8 12:26:49
|
显示全部楼层
本楼为最佳答案
本帖最后由 临时号 于 2022-7-8 12:28 编辑
如果还有一些不能作为文件名的字符,可以直接在remove_str那里添加
- import win32com.client
- import os
- count = 0
- remove_str = r"*\<>?"
- app = win32com.client.DispatchEx("Word.Application")
- file_name=[]
- for path,dirs,files in os.walk(os.getcwd()):
- for file in files:
- if (file.split(".")[-1]=="docx" or file.split(".")[-1]=="doc" )and "$" not in file: #只处理docx或doc文件
- app.visible = False #不显示word窗口
- doc = app.Documents.Open(f'{path}\{file}') #打开文件
- title=str(doc.paragraphs[0]) #获取第一段内容(也就是第一行,word中回车分隔的就是不同段落)
- doc.Close() #关闭打开的文档
- for r in remove_str:
- if r in title:
- title = title.replace(r,'')
- while True:
- try:
- if count == 0:
- os.rename(f'{path}\{file}',f"{path}\{str(title).strip()}.{file.split('.')[-1]}") #给文件改名
- else:
- os.rename(f'{path}\{file}',f"{path}\{str(title).strip()}({count}).{file.split('.')[-1]}")
- except FileExistsError:
- count += 1
- else:
- count = 0
- break
-
- break #只处理当前目录,所以第一项完成后退出
- app.Quit()
复制代码 |
|