[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Relink2NewPath_andSuffix_Subfolders_StatusMissing

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Relink2NewPath_andSuffix_Subfolders_StatusMissing

Didiana
Beiträge gesamt: 5

10. Jan 2014, 15:52
Beitrag # 1 von 9
Bewertung:
(3324 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Moin!

Vielleicht kann mir jemand helfen der sich besser im Scripten auskennt als ich ;)
Also wie man dem Thema schon evtl. entnehmen kann versuche ich ein Script zu erstellen, welches das Relink2NewPath, Relink2NewPath_andSuffix, Relink2NewPath_Subfolders und Relink2NewPath_StatusMissing Script enthält.

Ich bräuchte also ein Script welches Verknüpfungen automatisch aktualisiert, dabei fehlende .jpg gegen gleichnamige .tif Verknüpfung austauscht und nach diesen in allen Unterordnern eines Ordners sucht.

Aus diesem Grund habe ich das funktionierende Script Relink2NewPath_andSuffix sowie Relink2NewPath_StatusMissing versucht mit dem Relink2NewPath_Subfolders zu kombinieren. Ich habe einiges ausprobiert aber das gewünschte Ziel erreiche ich nicht.
Vielleicht kann mir hier ja jmd weiterhelfen?

Diese hier habe ich versucht zu mixen, einzeln funktionieren sie einwandfrei:

Code
//Relink2NewPath_andSuffix.jsx   

var oldSuffix = ".jpg";
var newSuffix = ".tif";

var myDoc = app.documents[0];
var myFolder = Folder.selectDialog("Neuer Pfad zu dem Bildern")+"";
myLinks = myDoc.links;
for (oneLink=myLinks.length-1;oneLink>-1;oneLink--) {
myLink = myLinks[oneLink];
if (myLink.status == LinkStatus.linkMissing) {
myName = String(File.encode(myLink.name.split(oldSuffix).join(newSuffix)));
myNewLink = File(myFolder + "/" + myName);
try{
myLink.relink(myNewLink);
myLink.update();
}
catch(e){}
}
}



//Relink2NewPath_StatusMissing.jsx

var myDoc = app.documents[0];
var myFolder = Folder.selectDialog("Neuer Pfad zu dem Bildern")+"";
var myLinks = myDoc.links;
for (oneLink = myLinks.length-1; oneLink >-1; oneLink--) {
var myLink = myLinks[oneLink];
// Status: Verknüpfung fehlend
if (myLink.status == LinkStatus.linkMissing)
{
var myName = String(File.encode(myLink.name));
var myNewLink = File(myFolder + "/" + myName);
try{
myLink.relink(myNewLink);
myLink.update();
}
catch(e){}
}
}

//Relink2NewPath_Subfolders.jsx

var myDoc = app.documents[0];
var topFolder = Folder.selectDialog ("Choose a Folder...");
var fileandfolderAr = scanSubFolders(topFolder);
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)
{
}
}
}




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];
}


Und hier schlagen sich wahrscheinlich gleich alle die Hände über den Kopf, also bei dem hier hätte ich gerne Hilfe...

Code
//Relink2NewPath_Suffix_and_Subfolders.jsx   

var oldSuffix = ".JPG";
var newSuffix = ".tif";

var myDoc = app.documents[0];
var topFolder = Folder.selectDialog ("Choose a Folder...");
var fileandfolderAr = scanSubFolders(topFolder);
myLinks = myDoc.links;
for (oneLink=myLinks.length-1;oneLink>-1;oneLink--)
{
myLink = myLinks[oneLink];
if (myLink.status == LinkStatus.linkMissing) {
myName = String(File.encode(myLink.name.split(oldSuffix).join(newSuffix)));
myNewLink = File(myFolder + "/" + myName);
for (var c = 0; c < fileandfolderAr[1].length; c++)
{
var myNewLink = File(fileandfolderAr[1][c]+ "/" + myName);
try
{
myLink.relink(myNewLink);
myLink.update();
}
catch(e)
{
}
}
}
}


//Relink2NewPath_SubFolders.jsx

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];
}


//Relink2NewPath_StatusMissing.jsx

var myDoc = app.documents[0];
var myFolder = Folder.selectDialog("Neuer Pfad zu dem Bildern")+"";
var myLinks = myDoc.links;
for (oneLink = myLinks.length-1; oneLink >-1; oneLink--) {
var myLink = myLinks[oneLink];
// Status: Verknüpfung fehlend
if (myLink.status == LinkStatus.linkMissing)
{
var myName = String(File.encode(myLink.name));
var myNewLink = File(myFolder + "/" + myName);
try{
myLink.relink(myNewLink);
myLink.update();
}
catch(e){}
}
}

X

Relink2NewPath_andSuffix_Subfolders_StatusMissing

Hans Haesler
  
Beiträge gesamt: 5797

11. Jan 2014, 21:00
Beitrag # 2 von 9
Beitrag ID: #521927
Bewertung:
(3230 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Didiana,

herzlich willkommen auf HDS! :-)

Ich habe nun versucht, eine Testumgebung nachzubauen:
– in einem InDesign-Dokument drei ".JPG"-Dateien importiert;
– das InDesign-Dokument gespeichert und geschlossen;
– die drei Bilder mit Photoshop geöffnet und als ".tif" gespeichert;
– die drei neuen Dateien in je einen Unterordner eines Hauptordners verschoben;
– die drei Original-Dateien in einen anderen Ordner verschoben;
– das InDesign-Dokument erneut geöffnet.

Die drei Bilder haben den Status "Fehlend".

Jetzt Dein Original-Script gestartet. Zwei Mal wird man aufgefordert, den Hauptordner zu wählen. Am Schluss sind alle drei Bilder aktualisiert. Wo ist das Problem?

Als nächstes habe ich den Code gesäubert: Die führenden Leerschläge durch Tabulatoren ersetzt; die Einzüge korrigiert; die Akkoladen zum Teil anders positioniert und jene eingefügt, welche optionell weggelassen worden sind. Und den letzten Abschnitt – alles nach "//Relink2NewPath_SubFolders.jsx" – entfernt.

Zudem in Zeile 12 das myFolder durch topFolder ersetzt.

Und die neue Version des Scripts gestartet. Ergebnis: Alle drei Bilder werden wie erwartet aktualisiert.

Code
var oldSuffix = ".JPG"; 
var newSuffix = ".tif";

var myDoc = app.documents[0];
var topFolder = Folder.selectDialog ("Choose a Folder...");
var fileandfolderAr = scanSubFolders(topFolder);
myLinks = myDoc.links;
for (oneLink=myLinks.length-1; oneLink>-1; oneLink--) {
myLink = myLinks[oneLink];
if (myLink.status == LinkStatus.linkMissing) {
myName = String(File.encode(myLink.name.split(oldSuffix).join(newSuffix)));
myNewLink = File(topFolder + "/" + myName);
for (var c=0; c<fileandfolderAr[1].length; c++) {
var myNewLink = File(fileandfolderAr[1][c]+ "/" + myName);
try {
myLink.relink(myNewLink);
myLink.update();
}
catch(e) {
}
}
}
}

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];
}

Fragen:
1. Sind alle Bilder "Fehlend"? Oder gibt es auch welche, deren Status "OK" ist und durch eine Datei mit Endung ".tif" ersetzt werden sollen?
Falls letzteres zutrifft, dann muss das Script ergänzt werden.

2. Welche InDesign-Version benutzest Du? Falls CS4 oder höher: Die Zeile 17 (= myLink.update();) ist nicht mehr notwendig.

Gruss, Hans


als Antwort auf: [#521889]

Relink2NewPath_andSuffix_Subfolders_StatusMissing

Didiana
Beiträge gesamt: 5

11. Jan 2014, 23:26
Beitrag # 3 von 9
Beitrag ID: #521931
Bewertung:
(3198 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

die Testumgebung hast du perfekt nachgebaut, genau so hab ich das gemeint und bei dir hat das Script in der jetzigen Form funktioniert? Bei mir wurden nur fehlende Bilder aktualisiert, sofern sie bereits als .tif eingebaut worden waren. Die eingebauten .jpg dagegen wurden nicht aktualisiert und neu verknüpft und blieben weiterhin "Fehlend".

Antwort:
1. Meistens sind alle Bilder "Fehlend".
Jedoch befinden sich in einigen Dokumenten welche, die "Ok" sind, diese sind aber bereits korrekt verknüpft und können ignoriert werden. (Müssen nicht ersetzt werden) Auch kann es vorkommen, dass die Bilder bereits als ".tif" eingebaut worden sind, dennoch "Fehlend" sind und nur ein neuer Pfad zugeordnet werden muss.

2. Oh stimmt hätte ich erwähnen sollen. Ich nutze Indesign CS 5.0, CS 5.5, sowie CC. Jedoch wäre es primär wichtig, dass das Script in CS 5.5 funktioniert.

Immerhin hab ichs nicht ganz verbockt, da es bei dir zu funktioinieren scheint ;)


als Antwort auf: [#521927]

Relink2NewPath_andSuffix_Subfolders_StatusMissing

Hans Haesler
  
Beiträge gesamt: 5797

12. Jan 2014, 10:10
Beitrag # 4 von 9
Beitrag ID: #521934
Bewertung:
(3149 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Didiana,

Zitat ... Die eingebauten .jpg dagegen wurden nicht aktualisiert ...

Also ... wenn das Suffix der eingebauten ".jpg" ist und im Script die Variable 'oldSuffix' als ".JPG" definiert ist, dann kann es nicht funtionieren.

Ein neuer Versuch: Die Variable 'oldSuffix' wird bei jedem einzelnen fehlenden Bild festgestellt. Dann klappt es sowohl mit ".JPG" als auch mit ".jpg". Und sogar mit ".tif" und ".eps" und ".psd" und allem, was drei Buchstaben hat.

Code
//NeuVerknuepfen.js 
//DESCRIPTION:Fehlende Bilder neu verknüpfen

var newSuffix = ".tif";

var curDoc = app.documents[0];
var topFolder = Folder.selectDialog ("Bildordner wählen ...");
var fileandfolderAr = scanSubFolders(topFolder);
var allLinks = curDoc.links;
var probCtr = 0;
for (oneLink=allLinks.length-1; oneLink>-1; oneLink--) {
var curLink = allLinks[oneLink];
if (curLink.status == LinkStatus.linkMissing) {
var oldName = String(File.encode(curLink.name));
var oldSuffix = oldName.slice(-4);
var newName = oldName.replace(oldSuffix, newSuffix);
var newLink = File(topFolder + "/" + newName);
var okay = false;
for (var n=0; n<fileandfolderAr[1].length; n++) {
var newLink = File(fileandfolderAr[1][n]+ "/" + newName);
try {
curLink.relink(newLink);
okay = true;
break;
}
catch(e) {
}
}
}
if (!okay) { probCtr++; }
}

if (probCtr == 0) {
var dlog = new Window("palette");
dlog.size = [320,100];
dlog.add("statictext", [80, 100, 320, 116], "Fertig.");
dlog.show();
$.sleep(999);
dlog.close();
}
else if (probCtr == 1) {
alert ("Ein Bild nicht aktualisiert.", "Achtung");
}
else {
alert (probCtr + " Bilder nicht aktualisiert.", "Achtung");
}

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

Getestet mit CS5. Es sollte aber auch mit CS5.5 funktionieren.

Gruss, Hans


als Antwort auf: [#521931]

Relink2NewPath_andSuffix_Subfolders_StatusMissing

Didiana
Beiträge gesamt: 5

12. Jan 2014, 10:58
Beitrag # 5 von 9
Beitrag ID: #521936
Bewertung:
(3134 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

vielen Dank, dass du die Mühe auf dich nimmst! An sich sind die Bilder als ".JPG" eingebaut daher hatte ich auch im Script ".JPG" angegeben. Hatte halt dennoch nicht funktioniert.

Ich werde deine Scripte erst Montag austesten können, aber jetzt schon mal vielen vielen Dank! Wenn es bei dir schon funktioniert, kann ich recht zuversichtlich sein!


als Antwort auf: [#521934]

Relink2NewPath_andSuffix_Subfolders_StatusMissing

Didiana
Beiträge gesamt: 5

13. Jan 2014, 08:52
Beitrag # 6 von 9
Beitrag ID: #521958
Bewertung:
(3049 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans!
Habe soeben dein bereinigtes Script, sowie dein eigenes Script ausprobiert.
Letzteres funktionierte bei mir weder mit CC noch mit CS 5.5. Außer den .TIF Bildern wurden andere fehlende Bilder wie z.B. .eps, .psd etc. nicht neu verknüpft.

Ich habe übrigens aber auch den Fehler in meinem Script bzw. eher dem Indesign Dokument gefunden, ich habe zwar daran gedacht im Script die 'oldSuffix' Variable als .JPG zu definieren, habe sie aber im Eifer des Gefechts in meiner Indesign Datei als .jpg eingebaut.
Hachja war ein langer Freitag und ich hab den Wald vor lauter Bäume nicht mehr gesehen...

Vielen Dank für deine Hilfe! Das Script funktioniert und ich bin zufrieden! :)


als Antwort auf: [#521934]
(Dieser Beitrag wurde von Didiana am 13. Jan 2014, 08:54 geändert)

Relink2NewPath_andSuffix_Subfolders_StatusMissing

Schuggi
Beiträge gesamt: 18

11. Feb 2015, 14:58
Beitrag # 7 von 9
Beitrag ID: #536961
Bewertung:
(2246 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen

Ich habe soeben diesen Thread gefunden, bei der Suche nach der Lösung eines Verknüpfungsproblems. Bei mir stellt sich das ganze so ziemlich gleich dar. Nun ist es so, dass ich zwar Profi-Anwenderin bin, aber leider keinen Plan habe, wie man Skripte schreibt resp. erstellt. Wie resp. wo man sie speichert und anwendet, weiss ich. Jetzt wollte ich mal ganz scheu fragen, ob es wohl möglich wäre, mir das fertige Skript irgendwie zur Verfügung zu stellen.

Liebe Grüsse

P.S.: Ich arbeite mit InDesign CC auf OSX 10.6.8


als Antwort auf: [#521958]
(Dieser Beitrag wurde von Schuggi am 11. Feb 2015, 15:02 geändert)

Relink2NewPath_andSuffix_Subfolders_StatusMissing

Hans Haesler
  
Beiträge gesamt: 5797

11. Feb 2015, 15:14
Beitrag # 8 von 9
Beitrag ID: #536963
Bewertung:
(2215 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Schuggi,

ich bin gerade unterwegs, auf der Busfahrt nach Hause.
Sobald ich dort angekommen bin, werde ich Dir das Script zustellen.

Gruss, Hans


als Antwort auf: [#536961]

Relink2NewPath_andSuffix_Subfolders_StatusMissing

Hans Haesler
  
Beiträge gesamt: 5797

11. Feb 2015, 15:51
Beitrag # 9 von 9
Beitrag ID: #536970
Bewertung:
(2187 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Schuggi,

jetzt habe ich Dir das Script per PM zugestellt.

Eigentlich hättest Du so vorgehen können:
– alle Zeilen im Kasten "code" des Beitrags #4 auswählen;
– kopieren;
– in ein neues Fenster eines Texteditors (z.B. "BBEdit") einsetzen;
– unter dem Namen "NeuVerknuepfen.js" speichern.

Nun hoffe ich, dass es damit klappen wird.

Gruss, Hans


als Antwort auf: [#536961]
X

Aktuell

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
26.01.2021 - 27.01.2021

Digicomp Academy AG, Zürich oder virtuell
Dienstag, 26. Jan. 2021, 08.30 Uhr - Mittwoch, 27. Jan. 2021, 17.00 Uhr

Kurs

In diesem Advanced-Kurs erlernen Sie weitergehende Methoden im Dokumentenaufbau, der Typografie und im Bereich Layouttechniken. Nach diesem Kurs können Sie strukturierte Dokumente erstellen oder bestehende effizienter anpassen.

Dauer: 2 Tage
Preis: CHF 1'400.–

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/INDEM2

Veranstaltungen
27.01.2021 - 28.01.2021

Digicomp Academy AG, Bern oder Basel
Mittwoch, 27. Jan. 2021, 08.30 Uhr - Donnerstag, 28. Jan. 2021, 17.00 Uhr

Kurs

Mit After Effects können Sie visuelle Effekte und Animationen für Video, Web, DVD und Blu-Ray erzeugen. In diesem Kurs lernen Sie die Grundlagen kennen und sehen inspirierende Anwendungsbeispiele, die Ihnen helfen, Ihre eigenen Ideen umzusetzen.

Preis: CHF 1'700.-
Dauer: 2 Tage

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/AFT

Neuste Foreneinträge


Text- oder Grafikrahmen nach Position und Größe suchen und ändern

Absätze vor/nach AF suchen

Laser Drucker druckt schwarze Flecken Links und Rechts von Blatt

Gleich Große Icons erstellen

PSD CS6 (!) Mac: Dialog "Dateiinformationen" Fenster leer und Sackgasse

Langsamer MacMini

Illustrator Skript Übersatztext - Hilfe benötigt

ID CC 2019 und 2020: Crash beim Startvorgang - 2021

Inhalt Textrahmen verbinden

iPhone Farbprofil
medienjobs