[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:
(1819 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: 12783

30. Jun 2013, 08:06
Beitrag # 2 von 3
Beitrag ID: #514407
Bewertung:
(1760 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;
}



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:
(1722 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]