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

  • Автор темы Автор темы veretragna
  • Дата начала Дата начала

veretragna

γνώσις
Топикстартер
Сообщения
578
Реакции
200
Здравствуйте, камрады.
Возникла такая проблема: есть пакет из примерно 200 мелких файлов indd, они размещены в сложной структуре папок с несколькими уровнями вложения. Все эти документы берут линки из одной и той же папки, которая лежит отдельно.
Задача: возле каждого документа indd создать папку Links, скопировать принадлежащие ему линки туда и перелинковать.
Есть ли какое-то готовое решение для этой задачи?
 
Если Package можно вызвать скриптом, может получиться. Только Package создает лишнюю папку, надо руками это исправлять
 
  • Спасибо
Реакции: _MBK_
Какую такую лишнюю папку он создаёт?
Создаёт директорию в которой лежит сам INDD и дир. Links.
Потом можно уже средствами Тотал командер распихать всё на свои места
Или просто батник написать для этого
 
Создаёт директорию в которой лежит сам INDD и дир. Links.
Вот эту лишнюю папку и создает. Исходную структуру папок нужно соблюсти в точности, только дополнительную Links создать.
Потом можно уже средствами Тотал командер распихать всё на свои места
Или просто батник написать для этого
Уже есть идеи.
 
есть 200 indd в сложной структуре папок.
Задача: возле каждого документа indd создать папку Links, скопировать принадлежащие ему линки туда и перелинковать.
могу сделать скрипт. самое сложное в нём, как мне представляется — это написать процедуру поиска в папках индизайновских файлов :)
 
Уже бы руками все индд нашли, пооткрывали да наколлектили.
 
могу сделать скрипт. самое сложное в нём, как мне представляется — это написать процедуру поиска в папках индизайновских файлов :)
Сделать скрипт и я могу, только мне лениво его писать. Я спрашивал, есть ли какое-то готовое решение.
А процедуру рекурсивного поиска я когда-то выдрал из какого-то скрипта в интернете.
Использую примерно вот так:
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
Логично, согласен.
 
А задать в поиске .indd, выделить все и открыть, займёт считаные секунды.
 
Это скриптом можно сделать. Немного позже привинчу package, должно получиться. Ручная работа пойдет в последнюю очередь.
 
  • Спасибо
Реакции: veretragna
Кстати в индизайне вроде есть такая штука в палитре Links как Utilities-Copy Links To... То есть, если выделить все линки и применить эту команду, то линки копируются в нужную папку и перелинковываются, разве нет? (давно не заходил в прогу)
Верю, что из скриптинга можно дотянуться до этой команды, ну и после просто сохранить indd файл.
 
Последнее редактирование:
  • Спасибо
Реакции: NNN5 и aporiy zenonov