执笔论坛

 找回密码
 立即注册
搜索
查看: 6|回复: 0

[AE脚本]图层批量重命名 - 支持序号/前缀/后缀/查找替换

[复制链接]

72

主题

73

帖子

519

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
519
发表于 昨天 15:49 | 显示全部楼层 |阅读模式
// 图层批量重命名工具

// 支持多种重命名模式

(function(){
    var win = new Window("dialog", "批量重命名");
    win.orientation = "column";
   
    // 模式选择
    var modeGroup = win.add("group");
    modeGroup.add("statictext", undefined, "模式:");
    var mode = modeGroup.add("dropdownlist", undefined, [
        "添加前缀",
        "添加后缀",
        "查找替换",
        "序号命名"
    ]);
    mode.selection = 0;
   
    // 参数输入
    var paramGroup = win.add("group");
    paramGroup.orientation = "column";
   
    var prefixGroup = paramGroup.add("group");
    prefixGroup.add("statictext", undefined, "前缀:");
    var prefixInput = prefixGroup.add("edittext", undefined, "图层_");
   
    var suffixGroup = paramGroup.add("group");
    suffixGroup.add("statictext", undefined, "后缀:");
    var suffixInput = suffixGroup.add("edittext", undefined, "_v1");
   
    var replaceGroup = paramGroup.add("group");
    replaceGroup.add("statictext", undefined, "查找:");
    var findInput = replaceGroup.add("edittext", undefined, "");
    replaceGroup.add("statictext", undefined, "替换为:");
    var replaceInput = replaceGroup.add("edittext", undefined, "");
   
    var seqGroup = paramGroup.add("group");
    seqGroup.add("statictext", undefined, "起始序号:");
    var startInput = seqGroup.add("edittext", undefined, "1");
    startInput.characters = 5;
    seqGroup.add("statictext", undefined, "位数:");
    var digitsInput = seqGroup.add("edittext", undefined, "2");
    digitsInput.characters = 5;
   
    // 初始显示
    prefixGroup.visible = true;
    suffixGroup.visible = false;
    replaceGroup.visible = false;
    seqGroup.visible = false;
   
    mode.onChange = function() {
        prefixGroup.visible = (mode.selection.index === 0);
        suffixGroup.visible = (mode.selection.index === 1);
        replaceGroup.visible = (mode.selection.index === 2);
        seqGroup.visible = (mode.selection.index === 3);
    };
   
    // 执行按钮
    var btnGroup = win.add("group");
    btnGroup.alignment = "center";
    var applyBtn = btnGroup.add("button", undefined, "应用");
    var cancelBtn = btnGroup.add("button", undefined, "取消");
   
    applyBtn.onClick = function() {
        var comp = app.project.activeItem;
        if(!comp || !(comp instanceof CompItem)) {
            alert("请先激活一个合成");
            return;
        }
        
        var selectedLayers = comp.selectedLayers;
        if(selectedLayers.length === 0) {
            alert("请至少选择一个图层");
            return;
        }
        
        app.beginUndoGroup("批量重命名");
        
        switch(mode.selection.index) {
            case 0: // 前缀
                for(var i=0; i<selectedLayers.length; i++) {
                    selectedLayers[i].name = prefixInput.text + selectedLayers[i].name;
                }
                break;
            case 1: // 后缀
                for(var i=0; i<selectedLayers.length; i++) {
                    selectedLayers[i].name = selectedLayers[i].name + suffixInput.text;
                }
                break;
            case 2: // 查找替换
                var find = findInput.text;
                var replace = replaceInput.text;
                if(find) {
                    for(var i=0; i<selectedLayers.length; i++) {
                        selectedLayers[i].name = selectedLayers[i].name.split(find).join(replace);
                    }
                }
                break;
            case 3: // 序号
                var start = parseInt(startInput.text);
                var digits = parseInt(digitsInput.text);
                if(isNaN(start)) start = 1;
                if(isNaN(digits)) digits = 2;
               
                for(var i=0; i<selectedLayers.length; i++) {
                    var num = (start + i).toString();
                    while(num.length < digits) num = "0" + num;
                    selectedLayers[i].name = num;
                }
                break;
        }
        
        app.endUndoGroup();
        win.close();
    };
   
    cancelBtn.onClick = function() {
        win.close();
    };
   
    win.show();
})();
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|执笔论坛

GMT+8, 2026-3-17 06:39 , Processed in 0.176518 second(s), 18 queries .

Powered by 执笔论坛

Copyright © 2022-2026

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