[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Scripting Datei lesen

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

Scripting Datei lesen

lumpf
Beiträge gesamt: 10

29. Jun 2013, 23:03
Beitrag # 1 von 3
Bewertung:
(1658 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Leute,

Ich versuche in einem InDesigenDok per Script tausende male eine Verknüpfung zu ändern und jeweils ein Druck PDF auszugeben. Grunddokument bleibt also gleich es ändert sich nur jeweils eine Dateiverknüpfung.
Die Namen der Dateien die jeweils neu verknüpft weden sollen habe ich in einer Textdatei.
Momentan ist mein Problem, dass ich es nicht schaffe die Textdatei zu öffnen und einzulesen. Das ändern der Verknüpfung würde schon funktionieren, siehe Script anbei:

Code
var datei = File("C:\input.txt"); 
datei.open("r");

for(var a= 0; a < 3;a++) //test 3 Zeilen
{
//pfad = datei.readln();
BB = datei.read();
//myLinks=File("c:\test.indd").links
myLinks = app.activeDocument.links;
myLinksLength = myLinks.length;
for (oneLink=myLinks.length-1;oneLink>-1;oneLink--) {
//oneLink=myLinks.length-1
myLink = myLinks[oneLink];
myName = String(File.encode(myLink.name));
AA = myName;
myLinkName = myName.split(String(File.encode(".")));
myLinkExtention =
String(File.encode("."))+String(File.encode(myLinkName[1]));
myLinkPath = String(myLinks[oneLink].filePath);
myNewLinkPath = String(File.decode(myLinkPath.split(AA).join(BB)));
//myNewLinkPath = pfad

myNewFile = File(myNewLinkPath);
try{
//if((myLinkExtention == AA) || (myName == AA)){
myLink.relink(myNewFile);
myLink.update();
//}
}
catch(e){
}
}
}

Hat vielleicht jemand eine Idee wie ich hier richtig zeilenweise die Textdatei eilesen kann?

Vielen Dank!

lg
X

Scripting Datei lesen

Martin Fischer
  
Beiträge gesamt: 12626

30. Jun 2013, 08:06
Beitrag # 2 von 3
Beitrag ID: #514407
Bewertung:
(1599 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo lumpf,

Du könntest statt die Datei zeilenweise zu lesen, den Inhalt der Datei mit dem read()-Befehl einmal insgesamt einlesen und die Zeilen an '\n' (oder '\r') splitten. So erhältst Du den Inhalt der Zeilen als Array und brauchst zum Lesen keine Schleife.

Darüberhinaus kannst Du damit die Datei nach dem Lesen wieder schließen und brauchst sie für die anderen Schritte nicht offen halten.

Code
var result = read_txt('/c/input.txt'); 
// do something

function read_txt( _filepath )
{
var _creator = "ttxt";
var _type = 'UTF8';
var _file = File( _filepath );
var _result = _file.open( "r", _type , _creator);
var _content = _file.read();
_file.close();
var _content_by_line = _content.split('\n');
return _content_by_line;
}


Viele Grüße
Martin




als Antwort auf: [#514405]

Scripting Datei lesen

lumpf
Beiträge gesamt: 10

30. Jun 2013, 10:59
Beitrag # 3 von 3
Beitrag ID: #514408
Bewertung:
(1561 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Vielen Dank, funktioniert wunderbar!!

Hab es wie folgt in mein Script eingebaut, kann jetzt Dateinnamen aus einer Textdatei auslesen und die Verknüpfung entsprechend anpassen.

Code
var _creator = "ttxt";     
var _type = 'UTF8';
var _filepath = '/c/input.txt';
var _file = File( _filepath );
var _result = _file.open( "r", _type , _creator);

for(var a= 0; a < 10;a++) //zu verarbeitende Zeilen
{
var result = read_txt();
BB = result;

myLinks = app.activeDocument.links;
myLinksLength = myLinks.length;
for (oneLink=myLinks.length-1;oneLink>-1;oneLink--) {
myLink = myLinks[oneLink];
myName = String(File.encode(myLink.name));
AA = myName;
myLinkName = myName.split(String(File.encode(".")));
myLinkExtention =
String(File.encode("."))+String(File.encode(myLinkName[1]));
myLinkPath = String(myLinks[oneLink].filePath);
myNewLinkPath = String(File.decode(myLinkPath.split(AA).join(BB)));
myNewFile = File(myNewLinkPath);
try{

myLink.relink(myNewFile);
myLink.update();

}
catch(e){
}
}
}
_file.close();

function read_txt()
{

var _content = _file.readln();
//_file.close();
var _content_by_line = _content;
//var _content_by_line = _content.split('\n');
return _content_by_line;
}


Eigenartig ist, dass die erste Zeile nicht verarbeitet wird. Wenn ich das lesen ändere und alles auf einmal per read einlese, wie lese ich dann die einzelnen Werte aus dem Array, geht das hier auch mit z.b. var a = arrayname(index)?

Vielen Dank nochmal!

lg


als Antwort auf: [#514407]

Aktuell

InDesign / Illustrator

| 23.05.2022

IDUG_300

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
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022
Veranstaltungen
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022