[ID CC2020] Копирование линков в папку документа

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
191
Здравствуйте, камрады.
Возникла такая проблема: есть пакет из примерно 200 мелких файлов indd, они размещены в сложной структуре папок с несколькими уровнями вложения. Все эти документы берут линки из одной и той же папки, которая лежит отдельно.
Задача: возле каждого документа indd создать папку Links, скопировать принадлежащие ему линки туда и перелинковать.
Есть ли какое-то готовое решение для этой задачи?
 

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
191
Если Package можно вызвать скриптом, может получиться. Только Package создает лишнюю папку, надо руками это исправлять
 
  • Спасибо
Реакции: _MBK_

xenOnn

15 лет на форуме
Сообщения
179
Реакции
27
Какую такую лишнюю папку он создаёт?
Создаёт директорию в которой лежит сам INDD и дир. Links.
Потом можно уже средствами Тотал командер распихать всё на свои места
Или просто батник написать для этого
 

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
191
Создаёт директорию в которой лежит сам INDD и дир. Links.
Вот эту лишнюю папку и создает. Исходную структуру папок нужно соблюсти в точности, только дополнительную Links создать.
Потом можно уже средствами Тотал командер распихать всё на свои места
Или просто батник написать для этого
Уже есть идеи.
 

bossrus

шибка умный, аднака
10 лет на форуме
Сообщения
417
Реакции
66
есть 200 indd в сложной структуре папок.
Задача: возле каждого документа indd создать папку Links, скопировать принадлежащие ему линки туда и перелинковать.
могу сделать скрипт. самое сложное в нём, как мне представляется — это написать процедуру поиска в папках индизайновских файлов :)
 

~RA~

Забанен
10 лет на форуме
Сообщения
9 388
Реакции
2 678
Уже бы руками все индд нашли, пооткрывали да наколлектили.
 

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
191
могу сделать скрипт. самое сложное в нём, как мне представляется — это написать процедуру поиска в папках индизайновских файлов :)
Сделать скрипт и я могу, только мне лениво его писать. Я спрашивал, есть ли какое-то готовое решение.
А процедуру рекурсивного поиска я когда-то выдрал из какого-то скрипта в интернете.
Использую примерно вот так:
JavaScript:
var inPath = prompt("Введите путь к папке, где искать файлы", "");

if (inPath)
    main();

function main() {
    app.scriptPreferences.userInteractionLevel = UserInteractionLevels.NEVER_INTERACT;
    var files = find_files (inPath, ['.indd']);
    if (files.length > 0) {
        app.open(files);
        alert("Готово.");
    }
    app.scriptPreferences.userInteractionLevel = UserInteractionLevels.INTERACT_WITH_ALL;
}

function find_files (dir, mask_array){
    var arr = [];
    for (var i = 0; i < mask_array.length; i++){
        arr = arr.concat (find_files_sub (dir, [], mask_array[i].toUpperCase();
    }
    return arr;
}

function find_files_sub (dir, array, mask){

    var f = Folder (dir).getFiles ( '*.*' );

    for (var i = 0; i < f.length; i++){
        if (f[i] instanceof Folder){
            find_files_sub (f[i], array, mask);
        } else if (f[i].name.substr (-mask.length).toUpperCase() == mask){
            array.push (f[i]);
        }
    }
    return array;
}
 
  • Спасибо
Реакции: bossrus

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
191

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
191
Логично, согласен.
 

~RA~

Забанен
10 лет на форуме
Сообщения
9 388
Реакции
2 678
А задать в поиске .indd, выделить все и открыть, займёт считаные секунды.
 

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
191
Это скриптом можно сделать. Немного позже привинчу package, должно получиться. Ручная работа пойдет в последнюю очередь.
 

qsedftghk

фея
12 лет на форуме
Сообщения
1 737
Реакции
915
Кстати в индизайне вроде есть такая штука в палитре Links как Utilities-Copy Links To... То есть, если выделить все линки и применить эту команду, то линки копируются в нужную папку и перелинковываются, разве нет? (давно не заходил в прогу)
Верю, что из скриптинга можно дотянуться до этой команды, ну и после просто сохранить indd файл.
 
Последнее редактирование:
  • Спасибо
Реакции: NNN5 и aporiy zenonov