hilfdirselbst.ch
Facebook Twitter gamper-media

Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » Nach fehlenden Verknüpfungen suchen/ersetzen - auch in Unterordner!

 



sagwas
Beiträge: 19

11. Okt 2006, 08:54

Beitrag #1 von 15
Bewertung:

(6102 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Nach fehlenden Verknüpfungen suchen/ersetzen - auch in Unterordner!


Hallo,
ich habe in Euren Forum das Superskript "RelinkLinksOfBookDocs2NewPath.js" gefunden.
"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)."

Code
// 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<myBook.bookContents.length; 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;
}


Jetzt meine Frage! Hat jemand dieses Skript mal umgeschrieben, damit es auch die Unterordner eines Ordners mit einbezieht? Oder hat einer eine Idee, wie man das am besten macht?
Top

Martin Fischer  M  p
Beiträge: 9696

11. Okt 2006, 09:01

Beitrag #2 von 15
Beitrag ID: #255703

Bewertung:

(6089 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Nach fehlenden Verknüpfungen suchen/ersetzen - auch in Unterordner!


> Oder hat einer eine Idee, wie man das am besten macht?
Über eine rekursive Funktion, also eine Funktion, die sich solange selber aufruft, bis sie einen Stoppbefehl erhält.
Praktisch ausgedrückt heißt das: diese Funktion arbeitet alle Ordner und deren Unterordner ab.

Dafür gibt es hier im Forum auch Beispiele (z.B. nach rekursiv suchen).

So früh am Morgen schaffe ich noch keine rekursive Funktion.
Damit wecke ich stets die Lust, eine rauchen zu gehen. ;-)


Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#255698] Top

sagwas
Beiträge: 19

17. Okt 2006, 08:52

Beitrag #3 von 15
Beitrag ID: #256861

Bewertung:

(6043 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Nach fehlenden Verknüpfungen suchen/ersetzen - auch in Unterordner!


hallo Martin,

ich hoffe die Zigarette hat geschmeckt! Ich hab mich dann mal selbst an die Arbeit gemacht. Da es mich immer ärgert, wenn ich zu Themen nur fragen aber keine Antwort bekomme, hier der Code: läuft auf MAc und CS2
Code
// RelinkLinksOfBookDocs2NewPath_inSubfolder2.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 topFolder = Folder.selectDialog ("Choose a Folder...");

var fileandfolderAr = scanSubFolders(topFolder);


var myDocs=myBook.bookContents;
for (oneDoc=0; oneDoc<myBook.bookContents.length; 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));

for (var c = 0; c < fileandfolderAr[1].length; c++){
var myNewLink = File(fileandfolderAr[1][c]+ "/" + 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;
}

function scanSubFolders(tFolder)
{
var sFolders = new Array();
var allFiles = new Array();
sFolders[0] = tFolder;
for (var j = 0; j < sFolders.length; j++) // loop through folders
{
var procFiles = sFolders[j].getFiles();
for (var k=0;k<procFiles.length;k++) // loop through this folder contents
{
if (procFiles[k] instanceof File) allFiles.push(procFiles[k]);
else if (procFiles[k] instanceof Folder) sFolders.push(procFiles[k]);
}
}
return [allFiles,sFolders];
}


als Antwort auf: [#255703] Top

Martin Fischer  M  p
Beiträge: 9696

17. Okt 2006, 13:56

Beitrag #4 von 15
Beitrag ID: #256970

Bewertung:

(6016 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Nach fehlenden Verknüpfungen suchen/ersetzen - auch in Unterordner!


Hallo SagWas,

> ich hoffe die Zigarette hat geschmeckt!
Bin mittlerweile Nichtraucher und möchte dies auch bleiben.
Deswegen drücke ich mich ja um rekursive Funktionen. ;-)

> Da es mich immer ärgert, wenn ich zu Themen nur fragen aber keine Antwort bekomme
Den Satz verstehe ich nicht. Bist Du wg. mir verärgert?
Hatte ich etwas versprochen und nicht eingehalten?

Dein Code sieht gut aus.
Hast Du die scanSubFolders()-Funktion selber entwickelt?
Und hat der Kopf wenigstens etwas geraucht?


Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#256861] Top

sagwas
Beiträge: 19

18. Okt 2006, 10:30

Beitrag #5 von 15
Beitrag ID: #257127

Bewertung:

(5970 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Nach fehlenden Verknüpfungen suchen/ersetzen - auch in Unterordner!


"> Da es mich immer ärgert, wenn ich zu Themen nur fragen aber keine Antwort bekomme
Den Satz verstehe ich nicht. Bist Du wg. mir verärgert?
Hatte ich etwas versprochen und nicht eingehalten?"

So war das nicht gemeint, ich haber nur gerade eine Stunde lang wegen einer Lösung zu einem anderen Problem in Foren gesucht, und kam nur zu den Ergebnis, dass es scheinbar tausende von Leute das gleiche Problem haben - aber keine Lösung. Deswegen dachte ich, ich stell mal die Lösung hierein - für alle die nachfolgen.

Schließlich, heißt das Forum ja "Hilf Dir Selbst"

Ich habe mir für die scanSubFolder-Function ein anderes Script als Anregung gefunden, und dann etwas angepassst.

Nichts für Ungut. Und herzlichen Glückwunsch zum Zigarettenverzicht.

als Antwort auf: [#256970] Top

Martin Fischer  M  p
Beiträge: 9696

24. Okt 2007, 10:02

Beitrag #6 von 15
Beitrag ID: #318484

Bewertung:

(5818 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Nach fehlenden Verknüpfungen suchen/ersetzen - auch in Unterordner!


Aus aktuellem Anlaß (Automatisches aktualisieren von Bilddaten in InDesign CS2 Tool gesucht) habe ich mir das Skript RelinkLinksOfBookDocs2NewPath_inSubfolder2.js nochmals näher angesehen und es etwas aufgeräumt und überarbeitet.

Die im Premium-Member Bereich veröffentlichte Version RelinkLinksOfDocs2NewPath_inSubfolders.jsx prüft den Status der Verknüpfungen aller offenen Dokumente.
Fehlt eine verknüpfte Datei, durchsucht das Skript ein anfangs ausgewähltes Verzeichnis und dessen Unterverzeichnisse nach der Datei. Im Erfolgsfall wird die neue Verknüpfung hergestellt und aktualisiert.


Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#256861] Top

Christoph Steffens  M 
Beiträge: 4600

24. Okt 2007, 10:30

Beitrag #7 von 15
Beitrag ID: #318493

Bewertung:

(5802 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Nach fehlenden Verknüpfungen suchen/ersetzen - auch in Unterordner!


Hallo Martin,
wäre das nicht auch was für ein Script, dass beim Öffnen von Dateien automatisch startet?
(Wie heißen die Dinger noch? EventScript oder so).
Also sobald ein Dokument geöffnet wird prüft das Script ob Links fehlen und sucht im eingestellten Ordner nach den Bildern...

Grüßle
Christoph Steffens

http://www.indesignusergroup.com/chapters/stuttgart/

als Antwort auf: [#318484] Top

Martin Fischer  M  p
Beiträge: 9696

24. Okt 2007, 10:35

Beitrag #8 von 15
Beitrag ID: #318495

Bewertung:

(5801 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Nach fehlenden Verknüpfungen suchen/ersetzen - auch in Unterordner!


So etwas würde mich ziemlich nerven, wenn ich bei jedem Öffnen des Dokuments erst mal einen Ordner zum Überprüfen der Links angeben und dann auch noch diese Überprüfung abwarten müßte.

Freilich ließe sich das über ein Eventskript schon einrichten.


Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#318493] Top

Christoph Steffens  M 
Beiträge: 4600

24. Okt 2007, 10:49

Beitrag #9 von 15
Beitrag ID: #318501

Bewertung:

(5797 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Nach fehlenden Verknüpfungen suchen/ersetzen - auch in Unterordner!


wenn es Dein Job ist, Daten von Kunden entgegen zunehmen und aufzubereiten, dann wäre das eine große Hilfe...

Grüßle
Christoph Steffens

http://www.indesignusergroup.com/chapters/stuttgart/

als Antwort auf: [#318495] Top

Martin Fischer  M  p
Beiträge: 9696

24. Okt 2007, 11:16

Beitrag #10 von 15
Beitrag ID: #318512

Bewertung:

(5778 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Nach fehlenden Verknüpfungen suchen/ersetzen - auch in Unterordner!


Christoph,

das muß man aber doch nicht bei jedem Öffnen jedes Dokuments machen - oder?

Das erwähnte Skript bearbeitet alle geöffneten Dokumente auf einen Schlag.

Vorschlag für einen Workflow:
Die Daten der Kunden am Dienstag auf
9:00 Uhr anliefern lassen.
9:01: Alle Dokumente öffnen;
9.35: Skript starten;
12:00: nachschauen, ob das Skript beendet ist; wenn nicht, in die Mittagspause gehen.


Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#318501] Top

Christoph Steffens  M 
Beiträge: 4600

24. Okt 2007, 11:31

Beitrag #11 von 15
Beitrag ID: #318522

Bewertung:

(5766 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Nach fehlenden Verknüpfungen suchen/ersetzen - auch in Unterordner!


Naja Martin,
wie und was man macht, hängt wohl vom individuellen Workflow ab.
Und wann ich Mittagspause mache, darf ich doch wohl noch selber entscheiden!!!!

;-)

Grüßle
Christoph Steffens

http://www.indesignusergroup.com/chapters/stuttgart/

als Antwort auf: [#318512] Top

conma S
Beiträge: 33

9. Feb 2010, 08:58

Beitrag #12 von 15
Beitrag ID: #433084

Bewertung:

(3144 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Nach fehlenden Verknüpfungen suchen/ersetzen - auch in Unterordner!


Hallo Martin,

vielen Dank für dein Super-script. Ich hatte es in MacCS3 schon öfter in Benutzung und mir dadurch einiges an Zeit erspart.

Aber jetzt doch noch eine kleine Bitte. Wäre es möglich, dieses Programm auch auf CS4 umzuschreiben? Das wäre ungemein hilfreich.

Gruß
Matthias

als Antwort auf: [#318484] Top

Martin Fischer  M  p
Beiträge: 9696

9. Feb 2010, 09:05

Beitrag #13 von 15
Beitrag ID: #433085

Bewertung:

(3132 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Nach fehlenden Verknüpfungen suchen/ersetzen - auch in Unterordner!


Hallo Matthias,

ich bin mir nicht ganz sicher, welche Version Du verwendest.
Klappt es unter CS4 nicht?

Gibt es einem Fehler bei der Zeile 'aLink.update();'?
Dann deaktiviere diesen Befehl im Skript folgendermaßen:
Code
//aLink.update(); 



Falls es etwas anderes ist, dann gib bitte den Wortlaut der Fehlermeldung und den Link zu der von Dir verwendeten Version an.


Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#433084] Top

conma S
Beiträge: 33

11. Feb 2010, 09:38

Beitrag #14 von 15
Beitrag ID: #433365

Bewertung:

(3035 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Nach fehlenden Verknüpfungen suchen/ersetzen - auch in Unterordner!


Hallo Martin,

peinlich, peinlich. Ich habe jetzt nochmal ein Test gemacht und es funktioniert alles bestens.

Ich hatte vor ein paar Wochen Bilder mit CS4 aktualisieren wollen und es hat nicht funktioniert. Als ich noch gesehen habe, dass bei deinem Programm lauffähig für CS2 und CS3 steht, bin ich davon ausgegangen, dass es nicht funktioniert.
Ich hatte glaube ich auch eine Fehlermeldung bekommen, aber ich habe dummerweise kein screen-shot gemacht (nochmal peinlich).

Gruß
Matthias

als Antwort auf: [#433085] Top

Martin Fischer  M  p
Beiträge: 9696

11. Feb 2010, 10:04

Beitrag #15 von 15
Beitrag ID: #433370

Bewertung:

(3029 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Nach fehlenden Verknüpfungen suchen/ersetzen - auch in Unterordner!


Hallo Matthias,

nix peinlich.
Hauptsache, es läuft.


Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#433365] Top


Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » Nach fehlenden Verknüpfungen suchen/ersetzen - auch in Unterordner!


^