[GastForen Programmierung/Entwicklung AppleScript Ordneraktion Quelle Ziel

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

Ordneraktion Quelle Ziel

Anonym
Beiträge gesamt: 22827

19. Sep 2005, 19:21
Beitrag # 1 von 10
Bewertung:
(1521 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

ist es möglich ein OS-X Ordnerscript zu erstellen, das einen Ordner "Quelle_1" überwacht, und alle eintreffenden Bilder in den Ordner "Ziel_1" movt - dabei sollten Bildname welche im Ziel-Ordner schon existieren nicht verschoben, sondern im Quell-Ordner gelöscht werden.

Die Bilddaten sind entweder .tif oder .jpg
Quell und Ziel befinden sich auf dem selben Volume

Danke im Vorraus
willem
X

Ordneraktion Quelle Ziel

Hans Haesler
  
Beiträge gesamt: 5818

19. Sep 2005, 22:26
Beitrag # 2 von 10
Beitrag ID: #420180
Bewertung:
(1520 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Willem,

ja, das ist möglich. Der Name des Quell-Ordners muss im Script nicht bekannt sein. Das heisst,
der Pfad wird durch das Anhängen des Ordneraktions-Scripts bestimmt. Hingegen muss der Pfad zum
Zielordner eingetragen werden. Dazu gibt es zwei Möglichkeiten. Entweder trägt man ihn im Code
fix ein oder man überlässt es dem Script, sich den Pfad zu merken.

Mit der zweiten Methode ist die Sache flexibler, weil bei einer Neuzuweisung des Zielordners nicht
der Code im Script geändert werden muss. Leider funktioniert es unter Panther mit der 'property'-
Definition nicht. Deshalb schlage ich vor, dass der Pfad in eine Textdatei geschrieben wird.
Die Ordneraktion versucht, diesen Pfad auszulesen. Bei der ersten Ausführung gelingt dies natürlich
nicht. Deshalb erscheint ein Dialog, welcher den Anwender den Zielordner wählen lässt.

Aber bei den weiteren Ausführungen erscheint der Dialog nicht mehr. Es sei denn, der Zielordner sei
umbenannt oder verschoben worden.

Der kleine Rest der Ordneraktion kümmert sich um die Dateien. In einer Wiederholungsschleife wird
der Name der Datei an den Zielordnerpfad gehängt und getestet, ob diese Datei schon im Zielordner
vorhanden ist. Wenn der Test keinen Fehler generiert (weil die Datei schon existiert), dann wird die
aktuelle Datei im Quellordner gelöscht. Falls ein Fehler generiert wird (weil die Datei noch nicht
vorhanden ist) wird die aktuelle Datei in den Zielordner verschoben.
---
on adding folder items to sourceFolder after receiving itemList
   set targetPath to (path to preferences as Unicode text) & "targetPath.txt"
   try
      set targetFolder to read file targetPath as Unicode text
   on error
      with timeout of 300 seconds
         activate
         set targetFolder to (choose folder with prompt "Einen Zielordner für die Bild-Dateien wählen.") as Unicode text
      end timeout
      writePath(targetFolder)
   end try
   try
      targetFolder as alias
   on error
      with timeout of 300 seconds
         activate
         set targetFolder to (choose folder with prompt "Einen Zielordner für die Bild-Dateien wählen.") as Unicode text
      end timeout
      writePath(targetFolder)
   end try
   repeat with aFile in itemList
      tell application "Finder" to set curName to name of file aFile
      try
         targetFolder & curName as alias
         tell application "Finder" to delete file aFile
      on error
         tell application "Finder" to move file aFile to folder targetFolder with replacing
      end try
   end repeat
end adding folder items to

on writePath(targetFolder)
   set targetPath to (path to preferences as Unicode text) & "targetPath.txt"
   try
      open for access file targetPath with write permission
      set eof of file targetPath to 0
      write targetFolder to file targetPath as Unicode text
      close access file targetPath
   on error
      try
         close access file targetPath
      end try
   end try
end writePath

---
Das Droplet ist unterwegs zu Dir.

Gruss, Hans


als Antwort auf: [#420179]

Ordneraktion Quelle Ziel

Anonym
Beiträge gesamt: 22827

20. Sep 2005, 00:33
Beitrag # 3 von 10
Beitrag ID: #420181
Bewertung:
(1520 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke Hans,
:-))
Gruss willem


als Antwort auf: [#420179]

Ordneraktion Quelle Ziel

Anonym
Beiträge gesamt: 22827

20. Sep 2005, 13:33
Beitrag # 4 von 10
Beitrag ID: #420182
Bewertung:
(1520 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

falls es machbar wäre, (will Dich nicht überstrapazieren) hätte ich noch einen Wunsch :-))

Da Quark keinen BilderOrdner mit mehr als ca. 650 Bilder verwalten kann, würde ich gerne beim "Quell_Ziel"-Script mehrere Ziel-Ordner auf bereits vorhandene Bilder überprüfen.

Beispiel:
Quelle_1 movt Files nur dann in Ziel_1
wenn:
in Ziel_2, Ziel_3 oder Ziel_4 keine
gleichnamigen Bilder vorhanden sind
wenn doch, dann lösche das Quell-File

mit badischen Grüssen
willem


als Antwort auf: [#420179]

Ordneraktion Quelle Ziel

Hans Haesler
  
Beiträge gesamt: 5818

20. Sep 2005, 14:17
Beitrag # 5 von 10
Beitrag ID: #420183
Bewertung:
(1520 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Willem,

das ist sicher machbar. Es stellt sich nur die Frage, wie die zusätzlichen Ziel-Ordner bestimmt werden.
Sind deren Name und Position fix? Oder wechseln sie oft?

Im ersten Fall könnte man die Pfade hartgecoded ins Script schreiben. Im zweiten Fall müsste man sich
halt bei der Auswahl gut konzentrieren. :-)

Gruss, Hans


als Antwort auf: [#420179]

Ordneraktion Quelle Ziel

Anonym
Beiträge gesamt: 22827

20. Sep 2005, 14:47
Beitrag # 6 von 10
Beitrag ID: #420184
Bewertung:
(1520 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

der zweite Fall trifft zu,
die Zielordner auszuwählen wäre super!

Gruss und Danke
willem


als Antwort auf: [#420179]

Ordneraktion Quelle Ziel

Hans Haesler
  
Beiträge gesamt: 5818

20. Sep 2005, 15:04
Beitrag # 7 von 10
Beitrag ID: #420185
Bewertung:
(1520 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Willem,

okay, wird gemacht.

Ich weiss im Moment noch nicht, ob die vier Pfade in einer einzigen Datei untergebracht
werden sollten oder ob es besser wäre, sie in vier einzelne Dateien zu schreiben.

Ich werde mich wieder melden.

Gruss, Hans


als Antwort auf: [#420179]

Ordneraktion Quelle Ziel

Hans Haesler
  
Beiträge gesamt: 5818

20. Sep 2005, 21:07
Beitrag # 8 von 10
Beitrag ID: #420186
Bewertung:
(1520 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Willem,

nach reiflicher Überlegung habe ich mich dazu entschlossen, die vier Pfade in vier einzelne
Textdateien zu schreiben. Warum? Wenn einer der Ordner nicht auffindbar wäre, dann müsste der
neue Pfad in der Pfaddatei den alten ersetzen. Machbar, aber reichlich kompliziert.

Beim ersten Ausführen, wird der Anwender aufgefordert, zuerst den Haupt-Zielordner und dann
die weiteren drei Zielordner auszuwählen. Wenn alle Pfade okay sind, geht das Script in eine
Wiederholungsschleife. Für jede Datei wird getestet, ob sie sich schon in einem der Zielordner
befindet. Wenn ja, wird die Flag-Variable 'fileExists' auf 'true' gesetzt. Falls dies der Fall
ist, wird die Datei im Quellordner gelöscht. Sonst wird sie in den Haupt-Zielordner verschoben.

Bei jeder weiteren Ausführung werden die vier Pfaddateien nacheinander eingelesen. Und bei allen
vieren muss einzeln geprüft werden, ob der entsprechende Ordner noch vorhanden ist.
---
on adding folder items to sourceFolder after receiving itemList
   set targetPath1 to (path to preferences as Unicode text) & "targetPath1.txt"
   set targetPath2 to (path to preferences as Unicode text) & "targetPath2.txt"
   set targetPath3 to (path to preferences as Unicode text) & "targetPath3.txt"
   set targetPath4 to (path to preferences as Unicode text) & "targetPath4.txt"
   -- Zielordnerpfad 1 einlesen
   try
      set targetFolder1 to read file targetPath1 as Unicode text
   on error
      with timeout of 300 seconds
         activate
         set targetFolder1 to (choose folder with prompt "Den Haupt-Zielordner für die Bild-Dateien wählen.") as Unicode text
      end timeout
      writePath(targetPath1, targetFolder1)
   end try
   -- Zielordnerpfad 1 testen
   try
      targetFolder1 as alias
   on error
      with timeout of 300 seconds
         activate
         set targetFolder1 to (choose folder with prompt "Den Haupt-Zielordner für die Bild-Dateien wählen.") as Unicode text
      end timeout
      writePath(targetPath1, targetFolder1)
   end try
   -- Zielordnerpfad 2 einlesen
   try
      set targetFolder2 to read file targetPath2 as Unicode text
   on error
      with timeout of 300 seconds
         activate
         set targetFolder2 to (choose folder with prompt "Den Zielordner_2 wählen.") as Unicode text
      end timeout
      writePath(targetPath2, targetFolder2)
   end try
   -- Zielordnerpfad 2 testen
   try
      targetFolder2 as alias
   on error
      with timeout of 300 seconds
         activate
         set targetFolder2 to (choose folder with prompt "Den Zielordner_2 wählen.") as Unicode text
      end timeout
      writePath(targetPath2, targetFolder2)
   end try
   -- Zielordnerpfad 3 einlesen
   try
      set targetFolder3 to read file targetPath3 as Unicode text
   on error
      with timeout of 300 seconds
         activate
         set targetFolder3 to (choose folder with prompt "Den Zielordner_3 wählen.") as Unicode text
      end timeout
      writePath(targetPath3, targetFolder3)
   end try
   -- Zielordnerpfad 3 testen
   try
      targetFolder3 as alias
   on error
      with timeout of 300 seconds
         activate
         set targetFolder1 to (choose folder with prompt "Den Zielordner_3 wählen.") as Unicode text
      end timeout
      writePath(targetPath1, targetFolder1)
   end try
   -- Zielordnerpfad 4 einlesen
   try
      set targetFolder4 to read file targetPath4 as Unicode text
   on error
      with timeout of 300 seconds
         activate
         set targetFolder4 to (choose folder with prompt "Den Zielordner_4 wählen.") as Unicode text
      end timeout
      writePath(targetPath4, targetFolder4)
   end try
   -- Zielordnerpfad 4 testen
   try
      targetFolder4 as alias
   on error
      with timeout of 300 seconds
         activate
         set targetFolder4 to (choose folder with prompt "Den Zielordner_4 wählen.") as Unicode text
      end timeout
      writePath(targetPath4, targetFolder4)
   end try
   -- Wiederholungsschleife durch die gedroppten Dateien
   repeat with aFile in itemList
      set fileExists to false
      tell application "Finder" to set curName to name of file aFile
      -- testen, ob die aktuelle Datei in einem der vier Ordner bereits existiert
      try
         (targetFolder1 & curName) as alias
         set fileExists to true
      end try
      try
         (targetFolder2 & curName) as alias
         set fileExists to true
      end try
      try
         (targetFolder3 & curName) as alias
         set fileExists to true
      end try
      try
         (targetFolder4 & curName) as alias
         set fileExists to true
      end try
      -- wenn ja, wird die Datei im Quell-Ordner gelöscht
      if fileExists then
         tell application "Finder" to delete file aFile
         -- sonst wird sie in den Haupt-Zielordner verschoben
      else
         tell application "Finder" to move file aFile to folder targetFolder1 with replacing
      end if
   end repeat
end adding folder items to

on writePath(targetPath, targetFolder)
   try
      open for access file targetPath with write permission
      set eof of file targetPath to 0
      write targetFolder to file targetPath as Unicode text
      close access file targetPath
   on error
      try
         close access file targetPath
      end try
   end try
end writePath

---
Diese zweite Fassung des Droplets ist unterwegs zu Dir.

Gruss, Hans


als Antwort auf: [#420179]

Ordneraktion Quelle Ziel

Hans Haesler
  
Beiträge gesamt: 5818

21. Sep 2005, 08:36
Beitrag # 9 von 10
Beitrag ID: #420187
Bewertung:
(1520 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Willem,

ja, Du hast recht! Wie Du mir privat mitgeteilt hast, habe ich im Test, welcher das Vorhandensein des Zielordners 3
prüft, vergessen, die Variablen zu ändern. Dieser Abschnitt muss lauten:
---
-- Zielordnerpfad 3 testen
try
   targetFolder3 as alias
on error
   with timeout of 300 seconds
      activate
      set targetFolder3 to (choose folder with prompt "Den Zielordner_3 wählen.") as Unicode text
   end timeout
   writePath(targetPath3, targetFolder3)
end try

---
Das habe ich bei meinen flüchtigen Testläufen nicht bemerkt, weil sich dieser Fehler erst auswirkt, wenn der Zielordner 3
nicht gefunden werden kann.

Bitte entschuldige meine Nachlässigkeit.

Zu Deiner weiteren Frage: Wenn Du das Script an einen anderen Quellordner anhängen und deshalb neue Zielordner
auswählen möchtest, dann gibt es zum "Zurücksetzen" der letzteren verschiedene Möglichkeiten. Entweder die
Zielordner umbenennen oder verschieben. Oder die Textdateien "targetPath1.txt", "targetPath2.txt" usw. löschen
(oder editieren! :-). Diese Dateien findest Du im Ordner "Bibliothek/Preferences". Nach diesen Massnahmen werden
beim ersten Ausführen wieder die Dialoge zum Auswählen der Zielordner erscheinen.

Gruss, Hans


als Antwort auf: [#420179]

Ordneraktion Quelle Ziel

Anonym
Beiträge gesamt: 22827

21. Sep 2005, 20:43
Beitrag # 10 von 10
Beitrag ID: #420188
Bewertung:
(1520 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

> Bitte entschuldige meine Nachlässigkeit.
auch ein blindes Huhn findet mal ein Korn :-)

Nun sind alle Fragen geklärt!

Danke Dir
Gruesse willem


als Antwort auf: [#420179]
X

Aktuell

PDF / Print
300_PDF20

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
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/

Veranstaltungen
01.03.2023 - 09.03.2023

Online
Mittwoch, 01. März 2023, 00.00 Uhr - Donnerstag, 09. März 2023, 00.00 Uhr

Online Webinar

Wie gehen wir mit diesen Veränderungen um? Was ist notwendig, damit wir die Digitalisierung im Unternehmen klappt? Veränderungsprozesse verstehen und entsprechend handeln Mitarbeiter als Botschafter Webseite mit WordPress erstellen SEA /SEO (Ads aufschalten)

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: B. Isik, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/digitalisierung-schweiz/