Hallo Marcel,
Du kannst es auch mit folgendem Skript (RelinkLinksOfBookDocs2NewPath.js) versuchen.
Das Skript arbeitet die Dokumente eines Buchs ab (wenn kein Buch geöffnet ist, dann fordert ein Dialog zum Öffnen eines Buches auf; ggf. mußt Du erst ein neues Buch erstellen).
Nach dem Start des Skripts wird der Anwender in einem Dialog aufgefordert, den neuen Pfad der Bilder anzugeben. Aktualisiert werden nur solche Links, für die ein namensgleiches Bild im neuen Pfad gefunden wird (beim Rest bleibt der alte Link aktiv).
Das Skript gibt Bescheid wenn es fertig ist.
Probier's mal mit einem Testdokument aus und gib' ne Rückmeldung, ob's läuft und tut, was Du willst.
// RelinkLinksOfBookDocs2NewPath.js
if (app.books.length > 1){
myBook = myBookSelect();
}
else {
// Wiederholung des Öffnen-Dialogs so lange keine Buchdatei geöffnet ist
while (app.books.length <1){
var myBookFile = File.openDialog("Wähle eine Buchdatei");
var myBook = app.open(File(myBookFile));
}
myBook = app.books[0];
}
var myFolder = Folder.selectDialog("Choose a folder")+"";
var myDocs=myBook.bookContents;
for (oneDoc=0; oneDoc // öffne Dokument "oneBook" des Buches
myDoc = app.open(File(myDocs[oneDoc].fullName), false);
myLinks = myDoc.links;
for (oneLink=myLinks.length-1;oneLink>-1;oneLink--) {
myLink = myLinks[oneLink];
myName = String(File.encode(myLink.name));
myNewLink = File(myFolder + "/" + myName);
try{
myLink.relink(myNewLink);
myLink.update();
}
catch(e){
}
}
// Dokument schließen - Sichern ohne zu fragen
myDoc.close(SaveOptions.yes);
}
alert("Ready")
function myBookSelect(){
var myBooks = app.books;
var myBookNames = [];
for (oneBook = 0; oneBook < myBooks.length; oneBook++){
myBookNames.push(myBooks[oneBook].name)
}
var myDialog = app.dialogs.add({name:"Wähle ein Buch"});
with(myDialog.dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Buch:"});
}
with(dialogColumns.add()){
var myField = dropdowns.add({stringList:myBookNames,selectedIndex:0});
}
}
}
var myResult = myDialog.show();
if(myResult == true){
var aBook = (myBooks[myField.selectedIndex]);
//alert(aBook.name);
myDialog.destroy();
}
else{
myDialog.destroy();
}
return aBook;
}