Пакетная перекомпоновка файлов Illustrator 2017 (.ai) с изображениями на файлообменнике Mac через скрипт (JavaScript)
Я занимался поиском и устранением неисправностей в огромной файловой библиотеке для организации, которая публикуется как файловый ресурс AFP приложением, работающим на файловом сервере Windows.
У них были некоторые проблемы с файловой структурой с неподдерживаемыми символами в некоторых именах папок. В результате мне пришлось переименовать некоторые папки, и многие их ссылки на файлы теперь не работают.
Вот пример сломанной ссылки на файл, я переименовал ее, чтобы сохранить конфиденциальность названия компании:
Вот пример старой ссылки:
afp: // COMPANYNAME-FP01 IP._afpovertcp._tcp.local / Graphics-PCS * / 00 Image - Библиотека ресурсов /01 Библиотека изображений продуктов /2202/2202NAR.jpg
Звезду ниже можно рассматривать как заполнитель для неподдерживаемого персонажа, который был удален:
/Graphics-PCS*/
переименован в:
/Graphics-PCS/
Учитывая вышеприведенные изменения, есть ли пакетный сценарий для повторного связывания, который позволяет мне выбрать папку назначения (включая подпапки) для поиска файла с тем же именем, к которому нужно вернуться?
Я нашел ниже, но я сталкиваюсь с ошибками при попытке запустить:
var i, j, searchfolder;
for (j = 0; j < app.documents.length; j++) {
doc = app.documents[j];
imgs = doc.links;
path = "afp://COMPANYNAME-FP01 IP._afpovertcp._tcp.local/IllustratorScriptTest/"; // type here the path for the folder to start
searchfolder = new Folder(path);
for (i = 0; i < imgs.length; i++) {
// Missing?
$.writeln("Image " + i);
if (imgs[i].status == LinkStatus.LINK_MISSING) {
$.writeln("Missing: " + imgs[i].name + " looking in " + searchfolder);
// Do we have a file?
imglist = findAnyFileDownThere(imgs[i].name, searchfolder);
$.writeln("Found " + imglist.length + " possible replacements.");
if (imglist.length == 1) {
//
imgs[i].relink(imglist[0]);
$.writeln("Relinked to " + imglist[0]);
}
}
}
}
function findAnyFileDownThere(filename, path) {
var result, folderList, fl;
result = Folder(path).getFiles(filename + ".*");
if (result.length > 0)
return result;
folderList = Folder(path).getFiles(function(item) {
return item instanceof Folder && !item.hidden;
});
for (fl = 0; fl < folderList.length; fl++) {
$.writeln("Looking in: " + path + "/" + folderList[fl].name);
result = findAnyFileDownThere(filename, path + "/" + folderList[fl].name);
if (result.length > 0)
return result;
}
return [];
}
Ошибка при попытке запустить скрипт:
Ошибка 21: undefined не является объектом. Строка: 9 "для (я =0; я
Моя интуиция заключается в том, что виноват путь AFP, поскольку он не является локальным путем к файлу. Кто-нибудь может посоветовать? Мне нужно, чтобы иметь возможность запустить это на файловом ресурсе.