是否存在可将PSD文件中的组导出为独立PSD文件的脚本?
批量导出PSD中的组为独立PSD文件的解决方案
可以通过Photoshop的JavaScript脚本实现批量将PSD内的顶层组导出为独立PSD文件,以下是完整实现方案:
核心脚本代码(单文件处理)
// 选择保存导出文件的文件夹 var saveFolder = Folder.selectDialog("选择保存导出PSD的文件夹"); if (saveFolder == null) { alert("未选择文件夹,脚本终止"); exit(); } // 获取当前活动文档 var doc = app.activeDocument; var docName = doc.name.replace(/\.[^\.]+$/, ""); // 移除原文件名后缀 // 遍历所有顶层组 for (var i = 0; i < doc.layers.length; i++) { var layer = doc.layers[i]; // 仅处理顶层组(忽略普通图层) if (layer.typename === "LayerSet") { var groupName = layer.name; // 复制当前组到新文档 layer.duplicate(); var newDoc = app.activeDocument; // 保存新文档为PSD格式 var savePath = saveFolder + "/" + docName + "_" + groupName + ".psd"; var saveOptions = new PSDOptions(); saveOptions.embedColorProfile = true; saveOptions.alphaChannels = true; saveOptions.layers = true; saveOptions.spotColors = true; newDoc.saveAs(new File(savePath), saveOptions, true, Extension.LOWERCASE); // 关闭新文档,不保留临时修改 newDoc.close(SaveOptions.DONOTSAVECHANGES); } } alert("导出完成!");
使用步骤
- 打开Adobe Photoshop,加载需要处理的目标PSD文件
- 点击顶部菜单
文件 > 脚本 > 浏览,选中并运行上述脚本文件 - 在弹出的对话框中选择导出文件的保存文件夹,等待脚本执行完成
扩展脚本(批量处理文件夹内所有PSD)
如果需要一次性处理整个文件夹内的PSD文件,可使用以下脚本:
// 选择包含PSD文件的源文件夹 var sourceFolder = Folder.selectDialog("选择包含PSD文件的文件夹"); if (sourceFolder == null) { alert("未选择源文件夹,脚本终止"); exit(); } // 选择保存导出文件的目标文件夹 var saveFolder = Folder.selectDialog("选择保存导出PSD的文件夹"); if (saveFolder == null) { alert("未选择目标文件夹,脚本终止"); exit(); } // 获取文件夹内所有PSD格式文件 var psdFiles = sourceFolder.getFiles("*.psd"); // 遍历处理每个PSD文件 for (var i = 0; i < psdFiles.length; i++) { var file = psdFiles[i]; if (file instanceof File) { try { // 打开PSD文件 var doc = app.open(file); var docName = doc.name.replace(/\.[^\.]+$/, ""); // 遍历顶层组并导出 for (var j = 0; j < doc.layers.length; j++) { var layer = doc.layers[j]; if (layer.typename === "LayerSet") { var groupName = layer.name; layer.duplicate(); var newDoc = app.activeDocument; var savePath = saveFolder + "/" + docName + "_" + groupName + ".psd"; var saveOptions = new PSDOptions(); saveOptions.embedColorProfile = true; saveOptions.alphaChannels = true; saveOptions.layers = true; saveOptions.spotColors = true; newDoc.saveAs(new File(savePath), saveOptions, true, Extension.LOWERCASE); newDoc.close(SaveOptions.DONOTSAVECHANGES); } } // 关闭原PSD文件,不保存修改 doc.close(SaveOptions.DONOTSAVECHANGES); } catch (e) { alert("处理文件 " + file.name + " 时出错:" + e.message); } } } alert("批量处理完成!");
注意事项
- 脚本默认仅处理顶层组,若需导出嵌套组,可修改图层遍历逻辑,添加递归处理子组的代码
- 导出的PSD会完整保留原组内的图层、通道及颜色配置
- 运行脚本期间请保持Photoshop处于前台,避免操作干扰脚本执行
内容的提问来源于stack exchange,提问作者Tsunami Lâm
相关产品推荐
相关产品推荐

