[AI CC-CC2021] перелинкование растра с поиском

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
23
я вам код запостил, который все выдает из xmp на блюдечке с голубой каемочкой 'fp'
я не смог заставить его работать. Можете выложить пример с alert ? чтобы alert выдавал список линков.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 194
Реакции
10 845
alert(fileData); в конце? '))'
 
  • Спасибо
Реакции: Skvoznyak

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
23
ладно, со split разберусь сам, там вроде просто - для имени нужен последний индекс массива строки.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 194
Реакции
10 845

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
23
Всем привет, как получить все файлы во всех подпапках в указанном месте?
В примерах из сети разобраться не удалось.

Остановился на таком варианте, который пишет файлы в выделенный текст(пока для проверки):

PHP:
var dir = Folder("d:/Works/TEMP/TEST");
var aDoc = app.activeDocument;
var text = "";
  var counter = 0;
  var numbers = 1;
  function getAllFolders(curfolder)
  {
    var files = curfolder.getFiles();
    for (var l = 0; l < files.length; l++){
        if (files[l] instanceof Folder){
            var entry = files[l];
            counter++;
            getAllFolders(entry);
        }

        else if (files[l] instanceof File ) {
            text += (numbers++) + ": " + files[i] + "\n";
            }

      }
  }

  var curFolder = dir;

  getAllFolders(curFolder);
  text += "\n" + "folders: " + counter + "\n";
  //alert(counter + " - " + curFolder + " - " + text);
 
  for (i = 0 ; i < aDoc.textFrames.length; i++) //  пишем в выделенный текст
{
if (aDoc.textFrames[i].selected == true)
{
aDoc.textFrames[i].contents = text;
    }
}

Я понимаю, что надо использовать цикл "getFiles" пока они не закончатся, причём цикл файлов в цикле папок. Но вот КАК?..
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 194
Реакции
10 845

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
23
Не пойму сути проблемы. Вроде все верно, рекурсивный перебор файлов по папкам.
Или вы хотите чтоб вам код отладили?
Код не рабочий, мне нужно наладить поиск в подпапках по заданному имени. Как?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 194
Реакции
10 845

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
23
Следующий наводящий вопрос - что именно код неправильно делает?
Вечером пятницы некогда иллюстратор искать и отлаживать

вот этот код неверен:

PHP:
       else if (files[l] instanceof File ) {
            text += (numbers++) + ": " + files[i] + "\n";
            }

код НЕ запрашивает файлы из каждой подпапки.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 194
Реакции
10 845
Как минимум files [ i ] проиндексировано несуществующей переменной
Хоть и похожей внешне
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 194
Реакции
10 845
В общем проверил если поменять на files [ l ] работает правильно
 

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
23
В общем проверил если поменять на files [ l ] работает правильно

Спасибо огромное, очень помогли. Действительно, всё дело было в одной ошибочной переменной.

Рабочий код с рекурсивным поиском файла:

PHP:
var dir = Folder("d:/Works/TEMP/TEST");
var aDoc = app.activeDocument;
var text = "";
  var counter = 0; 
  var numbers = 1;
  function getAllFolders(curfolder)
  { 
    var files = curfolder.getFiles();   
    for (var i = 0; i < files.length; i++){   
        if (files[i] instanceof Folder){   
            counter++; 
            getAllFolders(files[i]); 
        } 

        else if (files[i] instanceof File ) {
            if ( files[i].displayName === "Mint_End Flat Cleand no icc.psd")
            {
                text += "\n" + "FOUND:   " + files[i].displayName + "\n\n";
            }

            text += (numbers++) + ": " + files[i].fsName + "\n";
            }

      } 
  }

  var curFolder = dir; 

  getAllFolders(curFolder); 
  text += "\n" + "Sub-folders: " + counter + "\n";
  //alert(counter + " - " + curFolder + " - " + text);

  for (i = 0 ; i < aDoc.textFrames.length; i++) //  пишем в выделенный текст
{
if (aDoc.textFrames[i].selected == true)
{
aDoc.textFrames[i].contents = text;
    }
}