[ID CS4-CS6] Заменить пути к линкам по маске

redfish

Участник
Топикстартер
Сообщения
9
Реакции
0
Здравствуйте! Подскажите, пожалуйста, есть ли решение такой проблемы:
имеется большой каталог с огромным количеством прилинкованных изображений.
Изображения хранятся на сервере в общей папке проекта и как правило все они называются либо 003.tiff, либо 0003.tiff. Разница только в пути к файлу через множество вложенных папок, например H:\A-14\3D\проект5\корпус\внешний\артикул158779\001.tiff. И вот в какой-то момент меняется имя диска и главной папки. Было H:\A-14\3D\ стало G:\A-14\3-D\.
Вопрос - как в индизайне заменить это в линках автоматом? В каталоге 8 индизайновских файлов, в каждом по 200-300 линков....
 

LeonidB

Их бин
10 лет на форуме
Сообщения
2 468
Реакции
1 528
Возможно, это поможет?
 
  • Спасибо
Реакции: redfish

redfish

Участник
Топикстартер
Сообщения
9
Реакции
0
Возможно, это поможет?
Это я уже попробовала:) Тут дело в том что заменить надо не часть имени файла, а часть пути к файлу:+((
Я пробовала заменить в скрипте var ffname =, но мне кажется там нельзя прописать именно путь со слешами... скриптописец из меня никакой...
 

redfish

Участник
Топикстартер
Сообщения
9
Реакции
0
Это я уже попробовала:) Тут дело в том что заменить надо не часть имени файла, а часть пути к файлу:+((
Я пробовала заменить в скрипте var ffname =, но мне кажется там нельзя прописать именно путь со слешами... скриптописец из меня никакой...
прошу прощения за странный смайлик
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
С этого момента по подробнее - разве путь это не часть имени?
 

redfish

Участник
Топикстартер
Сообщения
9
Реакции
0
Я не очень в курсе внутренней логики скриптов:) мне бы готовое решение с кнопочкой
Но вот как я пыталась действовать
запускаю shutterLink - он пишет "не обнаружено связанных фалов имя которых начинается на "stock-photo". Ок, у меня таких и нет.
В скрипте нахожу "stock-photo"
var ffname = 'stock-photo';
меняю на var ffname = 'H:\A-14\3D ';

и получаю вот что
shutterLink.jpg


т.е. слеши, двоеточия и прочие части именно пути не воспринимаются
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Экранируйте обратный слэш - \\
 

redfish

Участник
Топикстартер
Сообщения
9
Реакции
0
не работает:(
только теперь в окне с отказом пишет правильный путь со всеми слешами:), но по прежнему ничего не находит
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
А они точно там есть именно в таком написании?
 

redfish

Участник
Топикстартер
Сообщения
9
Реакции
0
да, я специально копировала начало пути из палитры Links - Copy full path
 

Hoar

12 лет на форуме
Сообщения
149
Реакции
61
так "H:\..." ведь уже не существует? Там случайно не новый путь уже надо указывать?
 

redfish

Участник
Топикстартер
Сообщения
9
Реакции
0
так это его "снаружи", на сервере не существует
а индизайн именно поэтому пути его искать пытается...
 

Oleg Butrin

20 лет на форуме
Сообщения
1 989
Реакции
1 213
JavaScript:
function main () {
    if (app.documents.length == 0) {
        return false;
    }
    var doc = app.activeDocument;
    var find = 'H:\\A-14\\3D';
    var change = 'G:\\A-14\\3-D';
    var links = doc.links.everyItem().getElements();
    for (var i = 0; i < links.length; i++) {
        var link = links[i];
        if (link.filePath.toString().indexOf(find) != -1) {
            var fpath = link.filePath.toString().replace(find, change);
            var file = File(fpath);
            if (file.exists) {
                link.relink(file);
            }
        }
    }
}

main();
 

redfish

Участник
Топикстартер
Сообщения
9
Реакции
0
JavaScript:
function main () {
    if (app.documents.length == 0) {
        return false;
    }
    var doc = app.activeDocument;
    var find = 'H:\\A-14\\3D';
    var change = 'G:\\A-14\\3-D';
    var links = doc.links.everyItem().getElements();
    for (var i = 0; i < links.length; i++) {
        var link = links[i];
        if (link.filePath.toString().indexOf(find) != -1) {
            var fpath = link.filePath.toString().replace(find, change);
            var file = File(fpath);
            if (file.exists) {
                link.relink(file);
            }
        }
    }
}

main();



получилось!!!!
Спасибо огромное!!!!!! Лучший подарок на новый год'))')
 

redfish

Участник
Топикстартер
Сообщения
9
Реакции
0
так его или физически не существует, или сервер выключен?
сервер работает и файл на месте, но из-за переименования самой верхней папки путь к файлу теперь другой (не тот который показывает в палитре Links)
 

Старкрафт

Участник
Сообщения
289
Реакции
106
Ещё один способ:
1. экспортируем в idml
2. распаковываем
3. меняем в блокноте поиском и заменой Spreads\Spread_хх.xml
(в windows слеши обратные, в файле прямые и кодировки на кириллице могут слететь)
4. запаковываем.

Всё это можно сделать в тотал-коммандере шоткатами:
Ctrl+PageDown по файлу, входим внутрь,
F4, открываем редактор
Ctrl+H меняем пути
сохраняем
тотал перепаковывает файл.
 
Последнее редактирование:
  • Спасибо
Реакции: ~RA~

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Вроде как, тут было мнение, что сейчас idml обратно не так просто упаковать
 

Oleg Butrin

20 лет на форуме
Сообщения
1 989
Реакции
1 213
Редактирование idml в таких случаях -- это как полостная хирургия при несварении.
 
  • Спасибо
Реакции: NNN5 и ~RA~

DrEgor

Участник
Сообщения
747
Реакции
68
Был скрипт готовый под это дело в интернете можно найти. Change pass of links.... Что-то типа того. Когда-то сделал для него ещё и пакетный вариант.