如何解决如何使用 (Adobe ExtendScript) 将包含子文件夹和文件的文件夹克隆/复制到另一个文件夹
我正在构建一个 photoshop 扩展,我想将一个文件夹克隆到 adobe 文件系统中的另一个文件夹(myDocuments 或 userData),我使用了 .copy() 方法,但这个方法只复制文件,而不是子文件夹,这是源文件夹和目标文件夹的结构:enter image description here
function copier() {
var src = "~/Desktop/main";
var dest = "~/Desktop/Dest";
if (src.exists) {
var files = src.getFiles()
for (var i = 0; i < files.length; i++) {
files[i].copy(dest);
}
} else {
return false;
}
}
解决方法
Bu 使用递归函数为每个文件夹创建文件夹并为每个文件复制文件。这是我使用的函数:
copyFolderContents({
source: "/path/to/source",target: "/path/to/target",supressAlerts: true,})
function copyFolderContents(data)
{
if (data.source.constructor != Folder) data.source = new Folder(data.source);
if (data.target.constructor != Folder) data.target = new Folder(data.target);
if (data.supressAlerts == undefined) data.supressAlerts = false
var errors = false;
copyFolder(data.source,data.target)
function copyFolder(sourceFolder,destinationFolder)
{
var sourceChildrenArr = sourceFolder.getFiles();
for (var i = 0; i < sourceChildrenArr.length; i++)
{
var sourceChild = sourceChildrenArr[i];
var destinationChildStr = destinationFolder.fsName + "/" + sourceChild.name;
if (sourceChild instanceof File)
{
copyFile(sourceChild,new File(destinationChildStr));
}
else
{
copyFolder(sourceChild,new Folder(destinationChildStr));
}
}
}
function copyFile(sourceFile,destinationFile)
{
createFolder(destinationFile.parent);
if (!sourceFile.copy(destinationFile))
{
if (!data.supressAlerts)
{
alert('Unable to copy\n' + sourceFile + '\nto\n' + destinationFile + '\nAborting.');
errors = true;
return false;
}
};
}
function createFolder(folder)
{
if (folder.parent !== null && !folder.parent.exists)
{
createFolder(folder.parent);
}
if (!folder.create())
{
alert('Unable to create:\n' + folder + "\nAborting.");
errors = true;
return false;
};
}
if (errors)
{
return false;
}
else
{
return true;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。