【Win10】批量更改文件夹内文件名-学习记录

一.开始

这篇文章主要记录学习制作数据集——批量修改文件名,这一步最好用于使用labelImg标注前,这样就可以不用再修改xml文件里面的filename及path等。本文是记录自己的操作过程,方便自己以后需要进行相同操作可以快速上手

参考原博文:菜鸟进化不脱发的博文

二.操作步骤

1.在待修改名字的文件夹中进入到终端(cmd)
在这里插入图片描述

2.在终端输入代码,创建a.xls文件

dir /b>a.xls

在这里插入图片描述
之后在原先的文件夹会出现一个a.xls文件
在这里插入图片描述

3.打开a.xls
(可能会提示文件损坏,但是不用管,可以继续打开,选择"是")
在这里插入图片描述

4.之后在第二列输入想改更改成的名字,例如“000001.jpg”
在这里插入图片描述

5.鼠标在这个单元格右下角,会出现黑色的“+”,按住然后下拉,会自动填充
在这里插入图片描述

6.之后在第三列的第一个格子输入命令,然后enter确定,会出现下图

="ren "&A1&" "&B1

在这里插入图片描述

7.鼠标同样放在第三列第一个格子的右下角,出现黑色“+”,下拉
在这里插入图片描述

8.复制第三列的内容
在这里插入图片描述

9.在原来的文件夹中创建一个txt文件,重命名为a.bat,之后右键“编辑”,输入刚刚复制的内容,之后保存
在这里插入图片描述
在这里插入图片描述

10.双击运行a.bat即可完成更名

  • 更改前
    在这里插入图片描述
  • 更改后
    在这里插入图片描述

如果失败时,可以将txt格式命令[另存为]时将[编码]选ANSI,然后再改bat运行就好了。

三.总结

这个方法很实用,也比较容易上手!
在这里插入图片描述

为了实现批量重命名指定文件夹内的文件功能(包括替换文件名中的前缀、后缀或指定内容),可以在现有代码基础上添加一个新的函数`rename_files_in_folder()`和相应的UI元素来接收用户的输入并触发该操作。以下是完整的代码: ```python import win32com.client as win32 import os from tkinter import Tk, filedialog, messagebox, Label, Entry, Button, Checkbutton, IntVar, Radiobutton, StringVar def replace_in_documents(folder_path, original_text, replacement_text, use_wildcards): # ... (保持不变) def rename_files_in_folder(folder_path, target_part, new_part, part_type): """对文件夹中的所有文件执行批量重命名""" renamed_count = 0 error_files = [] for filename in os.listdir(folder_path): old_file_path = os.path.join(folder_path, filename) if os.path.isfile(old_file_path): # 只处理文件而不是子目录 try: name, ext = os.path.splitext(filename) if part_type == 'prefix': if name.startswith(target_part): new_name = new_part + name[len(target_part):] else: continue elif part_type == 'suffix': if name.endswith(target_part): new_name = name[:-len(target_part)] + new_part else: continue else: # 'content' new_name = name.replace(target_part, new_part) new_filename = new_name + ext new_file_path = os.path.join(folder_path, new_filename) if new_file_path != old_file_path: os.rename(old_file_path, new_file_path) renamed_count += 1 except Exception as e: error_files.append((filename, str(e))) msg = f'成功重命名了{renamed_count}个文件。\n' if error_files: errors_info = '\n'.join([f'{f}: {e}' for f, e in error_files]) msg += f'\n以下文件未能成功重命名:\n{errors_info}' messagebox.showinfo("批量重命名结果", msg) def create_ui(): folder_selected = None operation_type = StringVar(value='replace_doc') # 默认值是替换文档内容 def browse_folder(): nonlocal folder_selected folder_selected = filedialog.askdirectory(title="选择包含Word文档或其他文件文件夹") if folder_selected: label_folder.config(text=f"已选择文件夹:{folder_selected}") def on_replace_click(): if not folder_selected or operation_type.get() == 'replace_doc': original_text = entry_original.get() replacement_text = entry_replacement.get() if entry_replacement.get() else "" if not original_text: messagebox.showwarning("警告", "请输入要查找的内容!") return replace_in_documents(folder_selected, original_text, replacement_text, var_use_wildcards.get()) def on_rename_click(): if not folder_selected or operation_type.get() == 'rename_files': target_part = entry_target_part.get() new_part = entry_new_part.get() part_type = radio_selection.get() if not target_part: messagebox.showwarning("警告", "请输入目标部分!") return rename_files_in_folder(folder_selected, target_part, new_part, part_type) root = Tk() root.title("批量处理工具") # 文件夹选择部分 button_browse = Button(root, text="选择文件夹", command=browse_folder) button_browse.grid(row=0, columnspan=2, pady=10) label_folder = Label(root, text="未选择文件夹") label_folder.grid(row=1, columnspan=2, pady=5) # 操作选择部分 radiobutton_replace_doc = Radiobutton( root, text="批量替换Word文档内容", variable=operation_type, value='replace_doc') radiobutton_rename_files = Radiobutton( root, text="批量重命名文件", variable=operation_type, value='rename_files') radiobutton_replace_doc.grid(row=2, columnspan=2, sticky='w', pady=(10, 0)) radiobutton_rename_files.grid(row=3, columnspan=2, sticky='w') # 批量替换Word文档内容的UI元素 label_original = Label(root, text="原内容:") label_original.grid(row=4, column=0, padx=5, pady=5) entry_original = Entry(root, width=40) entry_original.grid(row=4, column=1, padx=5, pady=5) label_replacement = Label(root, text="替换为:") label_replacement.grid(row=5, column=0, padx=5, pady=5) entry_replacement = Entry(root, width=40) entry_replacement.grid(row=5, column=1, padx=5, pady=5) var_use_wildcards = IntVar() checkbutton_wildcards = Checkbutton( root, text="启用通配符(*)", variable=var_use_wildcards) checkbutton_wildcards.grid(row=6, columnspan=2, pady=5) # 批量重命名文件的UI元素 label_target_part = Label(root, text="目标部分:") label_target_part.grid(row=7, column=0, padx=5, pady=5) entry_target_part = Entry(root, width=40) entry_target_part.grid(row=7, column=1, padx=5, pady=5) label_new_part = Label(root, text="新部分:") label_new_part.grid(row=8, column=0, padx=5, pady=5) entry_new_part = Entry(root, width=40) entry_new_part.grid(row=8, column=1, padx=5, pady=5) radio_selection = StringVar(value='content') # 默认值是替换指定内容 radiobutton_prefix = Radiobutton( root, text="前缀", variable=radio_selection, value='prefix') radiobutton_suffix = Radiobutton( root, text="后缀", variable=radio_selection, value='suffix') radiobutton_content = Radiobutton( root, text="指定内容", variable=radio_selection, value='content') radiobutton_prefix.grid(row=9, column=0, sticky='w', padx=5, pady=5) radiobutton_suffix.grid(row=9, column=1, sticky='w', padx=5, pady=5) radiobutton_content.grid(row=10, columnspan=2, sticky='w', padx=5, pady=5) # 开始按钮 button_replace = Button(root, text="开始", command=lambda: { on_replace_click() if operation_type.get() == 'replace_doc' else on_rename_click()}) button_replace.grid(row=11, columnspan=2, pady=10) root.mainloop() if __name__ == "__main__": create_ui() ``` 在这个版本中,我们增加了两个新的单选按钮让用户选择是要进行“批量替换Word文档内容”还是“批量重命名文件”。当用户选择了后者时,他们可以选择是否修文件名的前缀、后缀或是特定位置的内容,并通过输入框提供旧的部分和新的部分。点击“开始”按钮将根据当前的选择调用对应的函数完成任务。此外,程序会显示一条消息告知用户操作的结果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值