[GastForen Programmierung/Entwicklung AppleScript Dateien verschieben oder kopieren

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Dateien verschieben oder kopieren

Anonym
Beiträge gesamt: 22827

7. Feb 2005, 11:52
Beitrag # 1 von 7
Bewertung:
(2945 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo liebes Forum,

ich habe ein komplizertes Problem. (OS X 10.3.7)
Durch einen Anwenderfehler sind eine große Menge von Dateien (fast 50GB) in einen einzigen Ordner verschoben worden.
Jede Datei befindet sich in einem eigenen Unterordner, in dem sich ebenfalls eine Textdatei (ticket.jdf) befindet, in dem der Originalpfad des Dokumentes angegeben ist.
Das sieht in etwa so aus:
<File Tag="Main.Original">
                    file:///Macintosh HD/Users/ah/Desktop/filename.pdf
Kann ich mit Hilfe eines Applescripts den Pfad aus der Textdatei auslesen und die PDF-Datei wieder an die Originalstelle kopieren oder verschieben?
Ich bin beim Schreiben von Scripten ein ziemlicher Anfänger und für jede Hilfe dankbar.
Gruß
Andrea
X

Dateien verschieben oder kopieren

Hans Haesler
  
Beiträge gesamt: 5816

7. Feb 2005, 12:41
Beitrag # 2 von 7
Beitrag ID: #419312
Bewertung:
(2944 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo liebe Andrea,

wenn ich es richtig verstanden habe, dann sollten alle Unterordner (welche je die PDF-Datei
und die Textdatei enthalten), wieder in den ursprünglichen Ordner zurückverschoben werden.

Wenn in der Textdatei wirklich der Originalpfad der PDF-Datei eingetragen ist, dann sollte das
Zurückverschieben per Script machbar sein. Allerdings zeigt Dein Beispielpfad auf den Desktop
des Users "ah". Keine Spur von einem Ursprungsordner &#133;

Würdest Du mir bitte drei Textdateien zustellen. Und einen Screenshot (oder eine Beschreibung)
eines geöffneten Unterordners. Ich werde dann versuchen, ein Script zu entwickeln.

Gruss, Hans


als Antwort auf: [#419311]

Dateien verschieben oder kopieren

Hans Haesler
  
Beiträge gesamt: 5816

7. Feb 2005, 23:05
Beitrag # 3 von 7
Beitrag ID: #419313
Bewertung:
(2944 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Andrea,

wenn ich Deine Erklärungen (per private Mails) richtig verstanden habe, dann sind nicht "nur" &#150; wie
ursprünglich gepostet &#150; PDF-Dateien in ihre Herkunftsordner zurückzuverschieben, sondern auch Bild-
und Schriftdateien &#133; Ein schönes Schlamassel &#150; könnte man meinen.

Aber da sind zum Glück die ".jdf"-Dateien. Das sind XML-Files, in welchen für jede zu verschiebende
Datei der ursprüngliche Pfad gespeichert ist. Der Inhalt dieser Job-Ticket-Dateien ist aber leider
nicht nur eine einzelne Zeile, sondern besteht aus deren 32 &#133;

Mit einem XML-Utility könnte der Pfad leicht herausgelesen werden. Solch ein Tool habe ich aber nicht
zur Hand. Deshalb behelfe ich mir mit der Scripting Addition "Satimage.osax", mit welcher der String,
welcher uns interessiert, auch ausgezogen und zurechtgestutzt werden kann.

Das Droplet akzeptiert einen oder mehrere Ordner. Bei jedem Objekt, welches auf sein Icon fallengelassen
wurde, wird geprüft, ob der Pfad mit einem Doppelpunkt endet. Jeder Ordner enthält nur zwei Dateien.
Die zu verschiebende Datei und die Job-Ticket-Datei, welche immer "ticket.jdf" heisst. Deshalb ist die
Zuweisung der Namen einfach. Der Pfad zum JDF wird so bestimmt:
---
         set textFilePath to objectPath & "ticket.jdf"
---
Dieser Pfad wird zum Handler 'getPdfPath()' geschickt, die Datei wird in eine Variable gelesen und dank
RegEx- und Suchen-Ersetzen-Befehlen der Pfad der Herkunftsordner herausgepickt. Wenn dieser Pfad nicht
als leerer String zurückkommt, wird eine Liste des Ordnerinhalts erstellt: 'without invisibles', also
ohne eventuelle unsichtbare Dateien (wie "Icon" oder ".DS_Store").

Der Name der Bild- oder PDF- oder Was-auch-immer-Datei wird so in die Variable 'fileName' gesetzt ...
---
               if not (item i of fileList ends with ".jdf") then
                  set fileName to item i of fileList
               end if
---
... mit anderen Worten: Die erste Datei, deren Name nicht mit ".jdf" endet. Wenn dies Erfolg hat, dann
werden die Pfade der beiden Ordner und der Dateiname dem Handler 'movePDF()' übergeben, in welchem man
dem "Finder" sagt, er solle versuchen, die Datei in den Ursprungsordner zu verschieben. Wenn diese Aktion
gelingt, wird der gedroppte Ordner mit der Etikettenfarbe 6 eingefärbt, damit man eine optische Kontrolle
darüber hat, welche Ordner schon behandelt worden sind.
---
on open droppedObjects
   repeat with anObject in droppedObjects
      set objectPath to anObject as string
      if objectPath ends with ":" then
         set textFilePath to objectPath & "ticket.jdf"
         set origFolderPath to getPdfPath(textFilePath)
         if origFolderPath is not "" then
            set fileList to list folder objectPath without invisibles
            set fileName to ""
            repeat with i from 1 to count fileList
               if not (item i of fileList ends with ".jdf") then
                  set fileName to item i of fileList
               end if
            end repeat
            if fileName is not "" then
               movePDF(objectPath, fileName, origFolderPath)
            end if
         end if
      end if
   end repeat
end open

on getPdfPath(textFilePath)
   set origFolderPath to ""
   try
      set aString to read file textFilePath
      set aString to change (ASCII character 13) into "" in aString
      set aString to change (ASCII character 9) into "" in aString
      set filePath to (find text "<od:File Tag=\"Main.Original\">[ -z]+</od:File>" in aString with all occurrences, string result and regexp) as string
      set filePath to change "(<od:File Tag=\"Main.Original\">file:///)([!-z]+)(</od:File>)" into "\\2" in filePath with regexp
      set filePath to change "/" into ":" in filePath
      set AppleScript's text item delimiters to {":"}
      set origFolderPath to text items 1 thru -2 of filePath as string
      set AppleScript's text item delimiters to {""}
   end try
   return origFolderPath
end getPdfPath

on movePDF(objectPath, fileName, origFolderPath)
   try
      tell application "Finder" to move file fileName of folder objectPath to folder origFolderPath with replacing
      tell application "Finder" to set label index of folder objectPath to 6
   end try
end movePDF

---
Ich werde Dir das Droplet per Mail zustellen.

Gruss, Hans


als Antwort auf: [#419311]

Dateien verschieben oder kopieren

Anonym
Beiträge gesamt: 22827

8. Feb 2005, 09:12
Beitrag # 4 von 7
Beitrag ID: #419314
Bewertung:
(2944 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

vielen Dank für Deine Mühe! :D
Ich bin gespannt auf das Droplet. 

Herzliche Grüße
Andrea


als Antwort auf: [#419311]

Dateien verschieben oder kopieren

Hans Haesler
  
Beiträge gesamt: 5816

8. Feb 2005, 09:41
Beitrag # 5 von 7
Beitrag ID: #419315
Bewertung:
(2944 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Andrea,

ich habe jetzt den Handler, in welchem der Originalpfad ausgezogen wird, geändert. Die neue Version benötigt
die Scripting Addition "Satimage.osax" nicht mehr. Weil dieses Script bei einem Kunden eingesetzt werden soll,
ist es einfacher, wenn man ohne zusätzliche Hilfsmittel auskommt.

Hier ist der neue Handler:
---
on getPdfPath(textFilePath)
   set origFolderPath to ""
   try
      set aString to read file textFilePath
      repeat with i from 1 to count of paragraphs of aString
         if paragraph i of aString contains "<od:File Tag=\"Main.Original\">" then
            set curPara to paragraph (i + 1) of aString
            exit repeat
         end if
      end repeat
      repeat with i from 1 to count of curPara
         set curChar to character i of curPara
         if curChar is not tab then
            set filePath to text (i + 8) thru -2 of curPara
            exit repeat
         end if
      end repeat
      set AppleScript's text item delimiters to {"/"}
      set tmpPath to text items 1 thru -2 of filePath as list
      set AppleScript's text item delimiters to {":"}
      set origFolderPath to text items of tmpPath as string
      set AppleScript's text item delimiters to {""}
   end try
   return origFolderPath
end getPdfPath

---
Das Script liest die JDF-Datei in eine Variable. Dann geht es die Absätze durch. Sobald einer den Text
"<od:File Tag="Main.Original">" enthält, wird der nächste Absatz in eine neue Variable gegeben und die
Repeat-Schleife verlassen:
Code
<tab><tab><tab><tab><tab>file:///Macintosh HD/Ordner_1/Ordner_2/16%20datei%20namel%20xyz4.pdf<return> 

Die nächste Repeat-Schleife geht durch die Zeichen dieses Absatzes. Sobald ein Zeichen kein Tab mehr ist, werden
einer neuen Variable die Buchstaben (Wert des Zählers plus 8) bis zum vorletzten des Absatzes zugewiesen:
Code
Macintosh HD/Ordner_1/Ordner_2/16%20datei%20name%20xyz4.pdf 

Dann wird den 'AppleScript's text item delimiters' ein Bruchstrich zugewiesen. Damit können der Variablen
'tmpPath' die ersten drei Texteinheiten übergeben werden. Die vierte (der Dateiname) wird weggelassen:
Code
{"Macintosh HD", "Ordner_1", "Ordner_2"} 

Jetzt werden die 'text item delimiters' als Doppelpunkt festgelegt und die Elemente der Liste 'tmpPath' in die Variable
'origFolderPath' gegeben:
Code
"Macintosh HD:Ordner_1:Ordner_2" 

Die 'text item delimiters' werden wieder als leerer String definiert und der gefundene Pfad zum aufrufenden Handler
zurückgeschickt.

Und ich werde Dir jetzt das Droplet schicken und hoffe, dass die Dateien problemlos zurückverschoben werden können.

Gruss, Hans


als Antwort auf: [#419311]

Dateien verschieben oder kopieren

Anonym
Beiträge gesamt: 22827

10. Feb 2005, 20:21
Beitrag # 6 von 7
Beitrag ID: #419316
Bewertung:
(2944 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

sämtliche Dateien sind wieder am Originalplatz. Sie wurden zwar tatsächlich kopiert und nicht verschoben, aber das hat nicht wirklich gestört, da ausreichend Platz auf der Platte war.

Auch wenn ich mich wiederhole - Danke schön! ;-)

Herzliche Grüße
Andrea


als Antwort auf: [#419311]

Dateien verschieben oder kopieren

Hans Haesler
  
Beiträge gesamt: 5816

10. Feb 2005, 22:52
Beitrag # 7 von 7
Beitrag ID: #419317
Bewertung:
(2944 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Andrea,

bitteschön. Und danke für die Rückmeldung! Es freut mich, dass diese Aktion von Erfolg gekrönt war.

Übrigens: Die Dateien wurden kopiert, weil sich die Ursprungsordner nicht auf der selben Partition
wie die temporären Ordner befanden. Zum Glück ist der Finder in diesem Falle so nett, dass er den
'move'-Befehl ohne zu murren in 'duplicate' ändert.

Gruss, Hans


als Antwort auf: [#419311]
X

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
29.09.2022

IDUGS#85 Press2id

Zoom Meeting
Donnerstag, 29. Sept. 2022, 19.00 - 21.00 Uhr

Vortrag

Kennst du WordPress? Vielleicht. Verwendest du WordPress? Ja, klar! WordPress ist das am weitesten verbreitete System für die Erstellung von Webseiten. Um Webseitenbau soll es auf dieser IDUG aber nicht gehen. Gregor zeigt press2id (github.com/grefel/press2id). Seine Open-Source-Lösung für die Verbindung von Web und InDesign. Richtig gelesen: InDesign liest mithilfe von press2id die Inhalte der WordPress-Webseiten und generiert daraus Zeitschriften, Kataloge, Programmhefte oder Bierdeckel (das zeigen wir natürlich auch!). So wird die „Content First“ Theorie zu einer konkret anwendbaren Praxis, ohne gleich die ganz großen Räder zu drehen. Versprochen: Jeder kann nach der IDUG innerhalb kürzester Zeit Daten von WordPress nach InDesign importieren. Aber Achtung: Prinzipiell kann press2id aus jeder Website, oder besser Contentmanagementsystem (CMS) Daten auslesen und nach InDesign importieren! Spannend, oder? Danach geht es in die Praxis: Stefan hat die Webseite des Parktheater Iserlohn (parktheater-iserlohn.de) gestaltet. Die gedruckten Spielpläne (parktheater-iserlohn.de/interaktive-spielplaene) werden mit press2id realisiert. Wir schauen in den Maschinenraum und zeigen, wie die Lösung des Projekts realisiert wurde.

Nein

Organisator: InDesign Usergroup Stuttgart

Kontaktinformation: Christoph Steffens, E-Mailidug AT satzkiste DOT de

https://idugs85.eventbrite.de/

Von Wordpress nach InDesign
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