import os
import shutil
import tkinter as tk
from tkinter import filedialog
class BatchRenameApp:
def init(self, master):
self.master = master
master.title("批量重命名程序")
# 添加 Label 和按钮
    self.select_button = tk.Button(master, text="选择目录", command=self.select_directory)
    self.rename_button = tk.Button(master, text="重命名", command=self.rename_files)
    self.select_button.pack()
    self.rename_button.pack()

    # 添加 Text 组件和 Entry 组件
    self.file_list_text = tk.Text(master, bg="white", width=40, height=20)
    self.file_list_text.pack()
    self.new_name_entry = tk.Entry(master)
    self.new_name_entry.pack()

    # 初始化目录路径和文件列表
    self.directory_path = ""
    self.file_list = []

def select_directory(self):
    # 弹出选择目录对话框
    self.directory_path = filedialog.askdirectory()
    self.file_list_text.delete("1.0", 'end')
    self.file_list = []

    # 遍历目录下的文件和子目录
    for root, dirs, files in os.walk(self.directory_path):
        for file in files:
            if file.endswith(".txt"):
                file_path = os.path.join(root, file)
                self.file_list.append(file_path)
                self.file_list_text.insert(tk.END, file_path + "\n")

def rename_files(self):
    if not self.directory_path:
        self.file_list_text.insert(tk.END, "请先选择目录!\n")
        return

    new_name = self.new_name_entry.get()
    if not new_name:
        self.file_list_text.insert(tk.END, "请先输入新文件名!\n")
        return

    # 遍历文件列表,重命名文件
    for file_path in self.file_list:
        file_dir = os.path.dirname(file_path)
        old_file_name = os.path.basename(file_path)
        new_file_name = new_name + "_" + old_file_name
        new_file_path = os.path.join(file_dir, new_file_name)
        shutil.move(file_path, new_file_path)
        self.file_list_text.insert(tk.END, "{} --> {}\n".format(old_file_name, new_file_name))

    self.file_list_text.insert(tk.END, "文件重命名完成!\n")
if name == 'main':
root = tk.Tk()
app = BatchRenameApp(root)
root.mainloop()