在 Photoshop 的 JavaScript 脚本(ExtendScript)中,Folder
对象是一个核心工具,用于处理文件系统中的文件夹操作。它提供了对文件夹的创建、检查、遍历、文件筛选等功能,是自动化批量处理任务的重要基础。以下是 Folder
对象的详细介绍:
1. 创建 Folder
对象
语法:
var folder = new Folder("文件夹路径");
- 路径:可以是绝对路径(如
"C:/Users/YourName/Desktop"
)或相对路径(如"~/Desktop"
)。 - 示例:
var myFolder = new Folder("C:/Projects/MyImages");
2. 常用方法
(1)创建文件夹
- 方法:
folder.create()
- 描述:在指定路径创建文件夹,若文件夹已存在则返回
false
。 - 示例:
var folderPath = "C:/Projects/NewFolder"; var folder = new Folder(folderPath); if (!folder.exists) { folder.create(); $.writeln("文件夹创建成功:" + folderPath); } else { $.writeln("文件夹已存在:" + folderPath); }
(2)检查文件夹是否存在
- 属性:
folder.exists
- 描述:返回布尔值,
true
表示文件夹存在,false
表示不存在。 - 示例:
var folder = new Folder("C:/Projects/MyImages"); if (folder.exists) { $.writeln("文件夹存在"); } else { $.writeln("文件夹不存在"); }
(3)获取文件夹中的文件
- 方法:
folder.getFiles()
- 描述:返回文件夹中所有文件和子文件夹的数组。
- 过滤文件:
- 结合
Array.filter()
筛选特定类型的文件。 - 示例:获取所有
.jpg
文件:var folder = new Folder("C:/Projects/MyImages"); var files = folder.getFiles().filter(function(file) { return file instanceof File && /\.(jpg|jpeg)$/i.test(file.name); }); files.forEach(function(file) { $.writeln("找到文件:" + file.name); });
- 结合
(4)递归遍历子文件夹
- 示例:遍历文件夹及其子文件夹中的所有文件:
function traverseFolder(folder) { var files = folder.getFiles(); for (var i = 0; i < files.length; i++) { if (files[i] instanceof Folder) { traverseFolder(files[i]); // 递归子文件夹 } else if (files[i] instanceof File) { $.writeln("文件:" + files[i].fsName); } } } var rootFolder = new Folder("C:/Projects"); traverseFolder(rootFolder);
(5)删除文件夹
- 方法:
folder.remove()
- 描述:删除文件夹及其所有内容,需谨慎使用。
- 示例:
var folder = new Folder("C:/Projects/TempFolder"); if (folder.exists) { folder.remove(); $.writeln("文件夹已删除"); }
3. 常用属性
属性 | 描述 |
---|---|
exists |
返回布尔值,表示文件夹是否存在。 |
fsName |
返回文件夹的完整路径(字符串)。 |
name |
返回文件夹的名称(不包含路径)。 |
parent |
返回父文件夹的 Folder 对象。 |
4. 典型应用场景
-
批量处理文件:
- 遍历文件夹中的所有图像文件,进行统一调整(如调整大小、格式转换)。
- 示例:批量调整图像大小:
var folder = Folder.selectDialog("选择图片文件夹"); if (folder) { var files = folder.getFiles(/\.(jpg|png)$/i); for (var i = 0; i < files.length; i++) { var doc = app.open(files[i]); doc.resizeImage(800, 600); doc.saveAs(new File(files[i].parent + "/" + files[i].name.replace(/\.\w+$/, "_resized.jpg"))); doc.close(SaveOptions.DONOTSAVECHANGES); } }
-
自动化项目结构:
- 创建项目所需的文件夹结构(如
源文件
、输出
、备份
)。 - 示例:
var baseFolder = new Folder("C:/Projects/MyProject"); if (!baseFolder.exists) { baseFolder.create(); ["源文件", "输出", "备份"].forEach(function(name) { new Folder(baseFolder.fsName + "/" + name).create(); }); $.writeln("项目结构创建完成"); }
- 创建项目所需的文件夹结构(如
-
文件备份与归档:
- 将特定文件复制到备份文件夹。
5. 注意事项
-
路径格式:
- Windows 路径使用反斜杠(
\\
)或正斜杠(/
)。 - macOS 路径使用正斜杠(
/
)。
- Windows 路径使用反斜杠(
-
权限问题:
- 确保脚本有权限访问目标文件夹,否则会抛出错误。
-
错误处理:
- 使用
try-catch
捕获异常,避免脚本中断。 - 示例:
try { var folder = new Folder("C:/InvalidPath"); folder.create(); } catch (e) { $.writeln("错误:" + e.message); }
- 使用
6. 扩展功能
- 结合
File
对象:Folder
和File
对象通常配合使用,实现完整的文件系统操作。
- 结合 Photoshop API:
- 在脚本中调用 Photoshop 功能(如打开文件、保存文件),实现自动化图像处理。
总结
Folder
对象是 Photoshop JavaScript 脚本中处理文件夹的核心工具,提供了丰富的属性和方法,支持文件夹的创建、检查、遍历、文件筛选等操作。通过结合 File
对象和 Photoshop API,开发者可以实现高度自动化的批量处理任务,大幅提升工作效率。