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

veretragna

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

veretragna

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

xenOnn

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

veretragna

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

bossrus

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

~RA~

Одарённая.
12 лет на форуме
Сообщения
11 808
Реакции
3 434
Уже бы руками все индд нашли, пооткрывали да наколлектили.
 

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
199
могу сделать скрипт. самое сложное в нём, как мне представляется — это написать процедуру поиска в папках индизайновских файлов :)
Сделать скрипт и я могу, только мне лениво его писать. Я спрашивал, есть ли какое-то готовое решение.
А процедуру рекурсивного поиска я когда-то выдрал из какого-то скрипта в интернете.
Использую примерно вот так:
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
Реакции
199

~RA~

Одарённая.
12 лет на форуме
Сообщения
11 808
Реакции
3 434

veretragna

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

~RA~

Одарённая.
12 лет на форуме
Сообщения
11 808
Реакции
3 434
А задать в поиске .indd, выделить все и открыть, займёт считаные секунды.
 

veretragna

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

Gad

Сообщения
2 971
Реакции
1 405
  • Спасибо
Реакции: veretragna

qsedftghk

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