Пакетная перекомпоновка файлов 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, поскольку он не является локальным путем к файлу. Кто-нибудь может посоветовать? Мне нужно, чтобы иметь возможность запустить это на файловом ресурсе.

0 ответов

Другие вопросы по тегам