吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 824|回复: 35
上一主题 下一主题
收起左侧

[原创工具] 支持拖放的文件批量重命名工具

  [复制链接]
跳转到指定楼层
楼主
alomoi 发表于 2024-12-10 12:20 回帖奖励
本帖最后由 alomoi 于 2024-12-10 17:59 编辑

起因是近期整理扫描书,在找以前用过的一个批量重命名工具
很简单的一个小软件,填上文件编号的起始位、前缀,全选文件拖到软件界面上一松手就自动重命名完成
结果搜了一圈到处都找不到...

所以想着反正最近在研究aardio,干脆自己写一个练练手
于是就有了这个小东西


第一次用aardio写东西,肯定会有还没发现的bug啥的
这里附上源码,欢迎各位高手帮忙捉虫和改进
[AAuto] 纯文本查看 复制代码
import win.ui;
/*DSG{{*/
var winform = win.form(text="批量重命名";right=239;bottom=149;border="dialog frame";max=false;topmost=1)
winform.add(
edit={cls="edit";text="001";left=117;top=20;right=216;bottom=42;dr=1;dt=1;edge=1;multiline=1;num=1;z=3};
edit2={cls="edit";left=117;top=48;right=215;bottom=69;dr=1;dt=1;edge=1;z=5};
static={cls="static";text="拖放文件开始重命名";left=5;top=120;right=239;bottom=135;align="center";db=1;dl=1;dr=1;font=LOGFONT(weight=700);transparent=1;z=1};
static2={cls="static";text="文件名起始值";left=23;top=22;right=107;bottom=36;dl=1;dt=1;transparent=1;z=2};
static3={cls="static";text="文件名前缀";left=24;top=51;right=100;bottom=74;dl=1;dt=1;transparent=1;z=4};
static4={cls="static";text="吾爱破解论坛";left=5;top=93;right=239;bottom=108;align="center";db=1;dl=1;dr=1;transparent=1;z=6}
)
/*}}*/

import io;
winform.onDropFiles = function(files){
        start = winform.edit.text;
        tilte = winform.edit2.text; 
        d = string.len(start); 
    var count = #files; 
    
    for i = 1, count, 1 {
        var oldPath = files[i];
        var pathInfo = io.splitpath(oldPath); 
        var newFileName = tilte ++ string.format("%0"++d++"d", start) ++ pathInfo.ext; 
        var newPath = pathInfo.dir ++ "\\" ++ newFileName;
        var rename = io.rename(oldPath, newPath); 
        if (rename != true) {
            var result = winform.msgboxTest("将【" ++ oldPath ++ "】重命名为【"++ newFileName ++ "】时失败!"++'\n'++"可能存在重名或文件被占用"++'\n'++"是否跳过并继续?","重命名失败")
            if (result != true) {
                break; 
                }
        }
        start++;
    }
    winform.edit.text = string.format("%0"++d++"d", start); 
}

winform.show();
win.loopMessage();


aardio的程序个别杀软会报毒,不放心的可以自己编译

批量重命名.rar

414.68 KB, 下载次数: 106, 下载积分: 吾爱币 -2 CB

免费评分

参与人数 6吾爱币 +10 热心值 +6 收起 理由
pbgz + 1 + 1 谢谢@Thanks!
逍遙の楓 + 1 + 1 重命名以后起始值会变,能不能固定或者不变?
confiant + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
liaobaike520 + 1 + 1 谢谢@Thanks!
大话 + 1 鼓励转贴优秀软件安全工具和文档!
风之暇想 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
moshouhot 发表于 2024-12-11 16:17
[Python] 纯文本查看 复制代码
import tkinter as tk
from tkinter import messagebox
import os
import sys
from tkinterdnd2 import DND_FILES, TkinterDnD

class RenameApp:
    def __init__(self, root):
        self.root = root
        self.root.title("批量重命名")
        self.root.geometry("240x150")
        self.root.resizable(False, False)
        
        # 文件名起始值
        tk.Label(root, text="文件名起始值").place(x=23, y=22)
        self.start_num = tk.Entry(root)
        self.start_num.insert(0, "001")
        self.start_num.place(x=117, y=20, width=99, height=22)
        
        # 文件名前缀
        tk.Label(root, text="文件名前缀").place(x=24, y=51)
        self.prefix = tk.Entry(root)
        self.prefix.place(x=117, y=48, width=98, height=21)
        
        # 提示标签
        tk.Label(root, text="拖放文件开始重命名", font=('TkDefaultFont', 9, 'bold')).place(x=5, y=120, width=234)
        tk.Label(root, text="吾爱破解论坛").place(x=5, y=93, width=234)
        
        # 配置拖放
        self.root.drop_target_register(DND_FILES)
        self.root.dnd_bind('<<Drop>>', self.on_drop_files)

    def on_drop_files(self, event):
        files = event.data.split()
        # 获取起始值和前缀
        start = int(self.start_num.get())
        prefix = self.prefix.get()
        digits = len(self.start_num.get())
        
        # 处理每个文件
        for file_path in files:
            file_path = file_path.strip('{}')  # 移除可能的花括号
            dir_path = os.path.dirname(file_path)
            _, ext = os.path.splitext(file_path)
            
            # 生成新文件名
            new_name = f"{prefix}{str(start).zfill(digits)}{ext}"
            new_path = os.path.join(dir_path, new_name)
            
            try:
                os.rename(file_path, new_path)
                start += 1
            except OSError:
                if not messagebox.askyesno("重命名失败", 
                    f"将【{file_path}】重命名为【{new_name}】时失败!\n"
                    "可能存在重名或文件被占用\n"
                    "是否跳过并继续?"):
                    break
        
        # 更新起始值
        self.start_num.delete(0, tk.END)
        self.start_num.insert(0, str(start).zfill(digits))

def main():
    root = TkinterDnD.Tk()
    app = RenameApp(root)
    root.mainloop()

if __name__ == "__main__":
    main() 
沙发
tsyhome 发表于 2024-12-11 11:56
经常在资源管理器里直接多选重命名,会自动加入序号,有特殊需求的时候用工具重命名。
3#
Yxqy3145 发表于 2024-12-11 14:29
4#
gettr 发表于 2024-12-11 14:34
感谢分享了
5#
lianguis 发表于 2024-12-11 14:59
谢谢费心分享
7#
qjz159 发表于 2024-12-11 18:07
感谢分享!
8#
LWY39 发表于 2024-12-11 18:18
感谢楼主的分享!这个软件批量重命名很方便。
9#
zhuangbo 发表于 2024-12-11 19:05
楼主费心了,坚决支持!
10#
leechjia 发表于 2024-12-11 20:40
支持原创作品,辛苦了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-15 15:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表