import os import tkinter as tk from tkinter import filedialog, messagebox from datetime import datetime def select_folder_and_rename(): root = tk.Tk() root.withdraw() folder_path = filedialog.askdirectory(title="选择要处理的文件夹") if not folder_path: print("未选择文件夹,程序退出") return try: # 获取所有文件并按修改时间排序 files = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))] if not files: messagebox.showinfo("提示", "所选文件夹中没有文件") return # 获取文件修改时间并排序(从近到远) file_time_list = [] for file in files: file_path = os.path.join(folder_path, file) mtime = os.path.getmtime(file_path) file_time_list.append((file, mtime)) file_time_list.sort(key=lambda x: x[1], reverse=True) # 第一阶段:重命名为临时名称 (a1, a2, a3...) temp_renamed = {} # 存储原文件名到临时文件名的映射 for i, (old_name, _) in enumerate(file_time_list, 1): old_path = os.path.join(folder_path, old_name) file_ext = os.path.splitext(old_name)[1] temp_name = f"a{i}{file_ext}" temp_path = os.path.join(folder_path, temp_name) os.rename(old_path, temp_path) temp_renamed[old_name] = temp_name print(f"临时重命名: {old_name} -> {temp_name}") # 第二阶段:从临时名称重命名为最终名称 (1, 2, 3...) for i, (old_name, temp_name) in enumerate(temp_renamed.items(), 1): temp_path = os.path.join(folder_path, temp_name) file_ext = os.path.splitext(old_name)[1] final_name = f"{i}{file_ext}" final_path = os.path.join(folder_path, final_name) os.rename(temp_path, final_path) print(f"最终重命名: {temp_name} -> {final_name}") messagebox.showinfo("成功", f"已成功重命名 {len(files)} 个文件") except Exception as e: messagebox.showerror("错误", f"处理过程中出错: {str(e)}") if __name__ == "__main__": select_folder_and_rename()