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

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

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

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
... а так же Acrobat и CorelDraw '))'
 

~RA~

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

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

Участник
Топикстартер
Сообщения
277
Реакции
23
для Mac Os есть программулина, которая ищет потерянные линки и перелинковывает их.

Стоит 15 баксов.

123.png


Поиск по форуму Adobe не дал результат - запросы есть, работающих решений нет.

Нашлось одно решение в обход - можно заменять пути в самом AI - файле, через поиск и замену текста.
Одно неудобство - файл должен быть сохранён без компрессии ("use compression").
Думаю написать батник, который бы искал имена файлов в ai., искал их в папке заказчика и обновлял линки.
Протестил пока замену линков вручную в текстовом режиме ai файла - всё работает.

Процесс примерно выглядит так: есть, к примеру, 20 файлов ai с битыми линками, скриптом все открываем и сохраняем без сжатия. Далее запускаем утилиту поиска и замены линков. Профит.
 
  • Спасибо
Реакции: ~RA~

~RA~

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

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
там писать нечего, все линки в xmp есть
Нашлось одно решение в обход - можно заменять пути в самом AI - файле, через поиск и замену текста.
Одно неудобство - файл должен быть сохранён без компрессии ("use compression").
Думаю написать батник, который бы искал имена файлов в ai., искал их в папке заказчика и обновлял линки.
Протестил пока замену линков вручную в текстовом режиме ai файла - всё работает.

Процесс примерно выглядит так: есть, к примеру, 20 файлов ai с битыми линками, скриптом все открываем и сохраняем без сжатия. Далее запускаем утилиту поиска и замены линков. Профит.

я что-то не пойму, а что мешает вам самостоятельно написать скрипт не в обход, а с открытием файлов в AI и заменой линков? вроде какие-то сложные скрипты с заменой цветов пишете, а тут строчек 30 - пройтись по линкам, найти файлы в папке, перелинковать
 

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

Участник
Топикстартер
Сообщения
277
Реакции
23
там писать нечего, все линки в xmp есть


я что-то не пойму, а что мешает вам самостоятельно написать скрипт не в обход, а с открытием файлов в AI и заменой линков? вроде какие-то сложные скрипты с заменой цветов пишете, а тут строчек 30 - пройтись по линкам, найти файлы в папке, перелинковать
это первое, что я попробовал - написать сам. Сразу же вылезла проблема - если линки пропали, то запрос пути к файлу через скрипт невозможен, вылезает ошибка "объект не найден". Но он же прописан в файле в любом случае, это очевидно. Как пишут на форуме adobe, нужно идти в обход и доставать путь через XMP описание, я понятия не имею что это и как с ним работать. Надо долго ковыряться и не факт, что решение будет найдено. Повторюсь, на форуме adobe около 10 веток по данной теме и отзывы в духе "у меня не сработало".
 

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

Участник
Топикстартер
Сообщения
277
Реакции
23
Как думаете, если написать аналогичную той, что на скриншоте, будет востребована?
Мне в работе точно пригодится. Иногда перекидываю работы коллеге - другой диск, другие папки и линки летят к чёрту, ему приходится исправлять вручную, это лишняя трата времени. Пускай даже это занимает 3-5 минут. Недавно выкладывал ему 4 макета, считайте - 15-20 минут впустую.
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Как пишут на форуме adobe, нужно идти в обход и доставать путь через XMP описание, я понятия не имею что это и как с ним работать. Надо долго ковыряться и не факт, что решение будет найдено

ну это-то не сложно
пути нет, но имя у PlacedItem = имя файла
а если вам нужен оригинальный путь (хотя зачем он в данном случае?), то вот так

Код:
var xmpData = new XML(docRef.XMPString);
    var filePaths = xmpData.xpath('//stRef:filePath');
 
var fileData = {};

for(var i=0;i<filePaths.length();i++)
    {
            var currPath = filePaths[i].toString();
            var fileNameStartPos = Math.max(currPath.lastIndexOf("/"),currPath.lastIndexOf("\\"));
            fileData[currPath.substr(fileNameStartPos+1)] = currPath;
     }
 
  • Спасибо
Реакции: splxgf

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

Участник
Топикстартер
Сообщения
277
Реакции
23
ну это-то не сложно
пути нет, но имя у PlacedItem = имя файла
а если вам нужен оригинальный путь (хотя зачем он в данном случае?), то вот так

Код:
var xmpData = new XML(docRef.XMPString);
    var filePaths = xmpData.xpath('//stRef:filePath');
 
var fileData = {};

for(var i=0;i<filePaths.length();i++)
    {
            var currPath = filePaths[i].toString();
            var fileNameStartPos = Math.max(currPath.lastIndexOf("/"),currPath.lastIndexOf("\\"));
            fileData[currPath.substr(fileNameStartPos+1)] = currPath;
     }

Спасибо, путь файла мне пригодится, чтобы искать в папке заказчика вместо поиска по всему диску.

Очередная головная боль - куча новой инфы типа путей в формате URI, кодировка UTF-8 для русского текста в путях, работа с файловой системой...
 

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

Участник
Топикстартер
Сообщения
277
Реакции
23
Всем привет. Взялся написать скрипт, аналогичный Willshouse, который упоминал выше.
Проблема с русской кодировкой в именах файлов, как и ожидалось.
Как получить нормальные имена в нормальной кодировке? там UTF-8, на сколько я знаю.

скрипт берёт имена из C:\TEMP. Для примера.

PHP:
//  get all files

dir = Folder("С:/TEMP");

var files = dir.getFiles();

text = "";

for (i = 0; i < files.length; i++) {

text += files[i].name + "\n";

}

alert ("Files: " + files.length + "\n\n" + " names: \n\n" + text);
 

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

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

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

Участник
Топикстартер
Сообщения
277
Реакции
23
Всем привет. Взялся написать скрипт, аналогичный Willshouse, который упоминал выше.
Проблема с русской кодировкой в именах файлов, как и ожидалось.
Как получить нормальные имена в нормальной кодировке? там UTF-8, на сколько я знаю.

скрипт берёт имена из C:\TEMP. Для примера.

PHP:
//  get all files

dir = Folder("С:/TEMP");

var files = dir.getFiles();

text = "";

for (i = 0; i < files.length; i++) {

text += files[i].name + "\n";

}

alert ("Files: " + files.length + "\n\n" + " names: \n\n" + text);

это я решил - .name заменить на .fsName
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
.name и есть имя без пути

а какая кодировка "нормальная", если UTF-8 - ненормальная?
 

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

Участник
Топикстартер
Сообщения
277
Реакции
23
.name и есть имя без пути

а какая кодировка "нормальная", если UTF-8 - ненормальная?
1) name берёт название файла по пути, т.е. они не отделимы, разве не так?
2) в моём примере .name выдаёт символы типа "%20" вместо русских букв. Вопрос был как добиться нормальной работы с кодировкой.
 

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

Участник
Топикстартер
Сообщения
277
Реакции
23
Второй вопрос, как получить из пути только имя файла?
там конструкция со строкой и .split, плохо знаю эти разделения.
нашёл в тулз гайде.
есть 3 типа для переменных имени файлов:
Name - выдаёт некорректные русские символы в какой-то другой кодировке.
fsName - путь + имя.
displayName - только имя.

доставать имена из XMP, думаю можно только через split в строке
 
Последнее редактирование:

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
я вам код запостил, который все выдает из xmp на блюдечке с голубой каемочкой 'fp'