【免费工具】批量文件/文件夹重命名神器(自然排序+预览)V1.0 - 附下载链接

  • 功能亮点

    • 支持文件夹和文件批量重命名

    • 智能自然排序(数字顺序识别)

    • 可视化预览,避免误操作

    • 操作日志记录

  • 使用场景

    • 整理照片/视频资源(如:IMG_001 → 旅行日记_001

    • 管理文档(如:报告_初稿.docx → 终稿_XXX项目报告.docx

界面图

部分代码

 def create_widgets(self):
        # 主框架布局
        main_frame = tk.Frame(self.root)
        main_frame.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
        
        # 目录选择部分
        dir_frame = tk.Frame(main_frame)
        dir_frame.pack(fill=tk.X, pady=5)
        
        tk.Label(dir_frame, text="目标目录:").pack(side=tk.LEFT)
        tk.Entry(dir_frame, textvariable=self.directory, width=60).pack(side=tk.LEFT, padx=5)
        tk.Button(dir_frame, text="浏览...", command=self.browse_directory).pack(side=tk.LEFT)
        
        # 项目列表和操作区域
        list_frame = tk.Frame(main_frame)
        list_frame.pack(fill=tk.BOTH, expand=True)
        
        # 原始项目列表(使用Treeview显示更丰富的信息)
        tk.Label(list_frame, text="原始文件列表(按照名称升序排列)").grid(row=0, column=0, sticky="w")
        self.tree_frame = tk.Frame(list_frame)
        self.tree_frame.grid(row=1, column=0, sticky="nsew", padx=5, pady=5)
        
         # 使用Treeview显示文件信息
        self.tree = Treeview(
            self.tree_frame, 
            columns=("type", "path"), 
            show="headings",
            height=15,
            selectmode="extended"  # 允许多选
        )
        
        # 设置列标题
        self.tree.heading("#0", text="名称")
        self.tree.heading("type", text="类型")
        self.tree.heading("path", text="路径")
        # 设置列宽
        self.tree.column("#0", width=200)
        self.tree.column("type", width=100)
        self.tree.column("path", width=400)
        
        # 添加滚动条
        vsb = Scrollbar(self.tree_frame, orient="vertical", command=self.tree.yview)
        hsb = Scrollbar(self.tree_frame, orient="horizontal", command=self.tree.xview)
        self.tree.configure(yscrollcommand=vsb.set, xscrollcommand=hsb.set)
        
        self.tree.grid(row=0, column=0, sticky="nsew")
        vsb.grid(row=0, column=1, sticky="ns")
        hsb.grid(row=1, column=0, sticky="ew")
        
        # 新名称输入区域
        tk.Label(list_frame, text="新名称列表(不要加后缀名)").grid(row=0, column=1, sticky="w")
        self.new_names_text = scrolledtext.ScrolledText(list_frame, height=15, width=30)
        self.new_names_text.grid(row=1, column=1, sticky="nsew", padx=5, pady=5)
        
        # 预览区域
        tk.Label(list_frame, text="重命名预览").grid(row=0, column=2, sticky="w")
        self.preview_tree = Treeview(list_frame, columns=("new_name",), show="headings", height=15)
        self.preview_tree.heading("#0", text="原始名称")
        self.preview_tree.heading("new_name", text="新名称")
        self.preview_tree.grid(row=1, column=2, sticky="nsew", padx=5, pady=5)
        
        # 按钮部分
        button_frame = tk.Frame(main_frame)
        button_frame.pack(pady=10)
        
        tk.Button(button_frame, text="加载文件", command=self.load_items).pack(side=tk.LEFT, padx=5)
        tk.Button(button_frame, text="生成预览", command=self.generate_preview).pack(side=tk.LEFT, padx=5)
        tk.Button(button_frame, text="执行重命名", command=self.execute_rename).pack(side=tk.LEFT, padx=5)
        
        # 日志输出
        tk.Label(main_frame, text="操作日志").pack(anchor="w")
        self.log_text = scrolledtext.ScrolledText(main_frame, height=10)
        self.log_text.pack(fill=tk.BOTH, expand=True)
        
        # 配置网格权重
        list_frame.grid_columnconfigure(0, weight=3)
        list_frame.grid_columnconfigure(1, weight=1)
        list_frame.grid_columnconfigure(2, weight=3)
        list_frame.grid_rowconfigure(1, weight=1)
        
        self.tree_frame.grid_rowconfigure(0, weight=1)
        self.tree_frame.grid_columnconfigure(0, weight=1)
    
    def browse_directory(self):
        dir_path = filedialog.askdirectory()
        if dir_path:
            self.directory.set(dir_path)
            self.load_items()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值