Приветствую! Подскажите, как воспользоваться индизайновской функцией "relink to folder" (связать заново с папкой) в скрипте. Нужно перелинковать 300-400 фото в каталоге, но проблема в том, что фото находятся в разных папках.
Папки довольно объемные. Вот такая конструкция только собирает файлы около 2 минут:
А по ним еще нужно пройтись поиском и перелинковать.
Пробовал создавать сторонней программой индексный txt файл (получилось около 100000 строк) и вот таким скриптом перелинковывать:
Однако и такой способ работает очень долго.
А вот "relink to folder", справляется с этой задачей за 30-40 секунд. Как. Как он это делает?
Папки довольно объемные. Вот такая конструкция только собирает файлы около 2 минут:
Код:
myFolder.getFiles();
Пробовал создавать сторонней программой индексный txt файл (получилось около 100000 строк) и вот таким скриптом перелинковывать:
Код:
var myDoc = app.activeDocument;
var myLinks = myDoc.links;
var txtArr = read_txt_arr(openTxtFile());
for (j=0; myLinks.length>j; j++) {
compareLinks(myLinks[j]);
}
alert("Done");
//==========FUNCTIONS===================================
function compareLinks (srchString) {
for (var i=0; txtArr.length>i; i++) {
//if (txtArr[i].indexOf (srchString.filePath); > -1);
if ((txtArr[i].indexOf (srchString.name) > -1) && (txtArr[i].indexOf (srchString.filePath) != 0)) {
myLinks[j].relink(File(txtArr[i]));
}
}
}
function openTxtFile() {
defaultFile = new File (app.activeDocument.filePath+"_.txt");
if (File.fs == "Windows") {
return defaultFile.openDlg( 'Open Links File', "Plain text file:*.txt" );
} else {
return defaultFile.openDlg( 'Open Links File');
}
}
//читаем txt файл в массив txtArr
function read_txt_arr (lnkFile) {
var arr = [];
var f = File (lnkFile);
if (f.exists) {
f.open ("r");
while(!f.eof) {
arr.push(f.readln());
}
return arr
f.close ();
} else {
return ""
}
}
А вот "relink to folder", справляется с этой задачей за 30-40 секунд. Как. Как он это делает?