[GastForen Programmierung/Entwicklung AppleScript Ordneraktion "first in first out"

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

Ordneraktion "first in first out"

Anonym
Beiträge gesamt: 22827

10. Nov 2005, 12:54
Beitrag # 1 von 13
Bewertung:
(2773 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,
ein Ordner soll per AS überwacht werden. Daten die dort hereingeschriben werden, sollen in einen anderen festdefinierten Ordner weiterkopiert werden. Allerdings soll der Zeitraum zwischen dem weiterkopieren der einzelnen Daten mindesten 30 Sekunden betragen. Ganz wichtig ist, das die Daten in der Reihenfolge weiterverarbeitet werden, wie sie in den ersten Ordner hereingeschrieben werden. Der Zeitunterschied zwischen den Daten beträgt ca. 2 Sekunden.

Hat jemand eine Tip für mich?
Grüße
Uwe
X

Ordneraktion "first in first out"

Hans Haesler
  
Beiträge gesamt: 5798

10. Nov 2005, 14:54
Beitrag # 2 von 13
Beitrag ID: #420377
Bewertung:
(2772 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

eine schwierige Aufgabe. Angenommen es kommen 10 Dateien in den Hotfolder.
Das Script setzt die Namen in eine Liste und schickt alle 30 Sekunden eine Datei
weiter. Das dauert fünf Minuten.

Fragen:
1. Kommen während dieser Zeit weitere Dateien in den Hotfolder?
2. Ist mit dem Zeitunterschied von 2 Sekunden die Ankunftszeit im Ordner gemeint?
3. Sind beide Ordner auf demselben Volumen?

Gruss, Hans


als Antwort auf: [#420376]

Ordneraktion "first in first out"

Anonym
Beiträge gesamt: 22827

10. Nov 2005, 15:25
Beitrag # 3 von 13
Beitrag ID: #420378
Bewertung:
(2772 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
zu Frage1: ich gehe im Moment davon aus das wir Jobweise vorgehen werden. D.h. es fallen 1Bit Tiffs in den Ordner die pro Job alle die gleichen 4 Anfangsbuchstaben haben.
zu Frage2: habe ich einfach einmal reingeschrieben, weiß nicht ob es von Wichtigkeit ist. Wenn z.B. zu einem Job 10 1Bit Tffs gehören dauert es mindestens 20 Sekunden bis alle Daten da sind. (ist aber meiner Meinung nach zu ignorieren)
zu Frage3: ja, gleiches Volume - es reicht also auch ein bewegen

Hintergrund der ganzen Angelegenheit:
Ich setzte hier den Flightcheck Workflow ein. Diese Software ermöglicht es mir u.a. Photoshop zu automatisieren. Es sollen Tiffs aufgerufen, per Aktion bearbeitet werden und gesichert werden. Allerdings geht Flightcheck nicht hin und verarbeitet die Daten so wie sie zeitlich in den Hotfolder fallen, sondern greift sich die Daten wie "es ihm gefällt". Deshalb sollen die Daten so in den Ordner kopiert werden, das Flightcheck nicht anders übrigbleibt wie diese eine Datei zu verarbeiten und dann die nächste (die ja 30Sekunden später hereinkopiert wird). Am Ende wird von den aus Photoshop geänderten 1Bit Tiffs ein Screenproof erstellt, wo es ganz wichtig ist das die Farben (Daten) die genaue Reighenfolge einhalten.

Ein bischen viel Erklärung - aber vielleicht bringt sie ja Licht ins Dunkle.

Gruß
Uwe


als Antwort auf: [#420376]

Ordneraktion "first in first out"

Hans Haesler
  
Beiträge gesamt: 5798

10. Nov 2005, 16:33
Beitrag # 4 von 13
Beitrag ID: #420379
Bewertung:
(2772 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

es kann nie genug erklärt werden! Okay, ich werde versuchen, heute Abend etwas
zustandezubringen. Wird aber nicht einfach sein, die Bedingungen zu simulieren.

Gruss, Hans


als Antwort auf: [#420376]

Ordneraktion "first in first out"

Hans Haesler
  
Beiträge gesamt: 5798

11. Nov 2005, 08:50
Beitrag # 5 von 13
Beitrag ID: #420380
Bewertung:
(2773 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

gestern, kurz vor Mitternacht hatte ich eine erste Lösung. Dabei werden die Namen der eintreffenden Dateien
in eine Datei geschrieben. Damit das Script "weiss", dass der aktuelle Job beendet ist, muss man manuell
eine Datei namens "ende" in den Ordner kopieren.

Das funktioniert soweit gut, aber ich traue der Sache nicht so recht. Wenn die Dateien zu rasch hintereinander
eintreffen, dann könnte es sein, dass nicht alle erfasst würden. Das Script darf nur immer die erste Datei
erfassen. Es könnte mehrere aufnehmen, aber dann wäre die Reihenfolge nicht garantiert. Deshalb muss
zusätzlich noch das Modifikationsdatum festgestellt werden. Ich weiss noch nicht, ob ich dieses mit den Namen
in die Datei schreiben werde, um dann alle nach dem Datum zu sortieren, oder ob jedes "Paket" von Dateien
nach der Zeit sortiert wird, um dann nur den Namen festzuhalten.

Was ich wissen möchte: Unter welchem Mac OS soll das Script funktionieren? Panther (10.3.x)? Tiger (10.4.x)?

Gruss, Hans


als Antwort auf: [#420376]

Ordneraktion "first in first out"

Anonym
Beiträge gesamt: 22827

11. Nov 2005, 08:57
Beitrag # 6 von 13
Beitrag ID: #420381
Bewertung:
(2772 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

das Script sollte unter Mac OS 10.3.x laufen.

Gruss, Uwe


als Antwort auf: [#420376]

Ordneraktion "first in first out"

Hans Haesler
  
Beiträge gesamt: 5798

11. Nov 2005, 12:43
Beitrag # 7 von 13
Beitrag ID: #420382
Bewertung:
(2773 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

es ist geschafft! :-) Ich habe die schon skizzierte Strategie etwas geändert. Die Namen der Files werden
nicht in eine Datei geschrieben, sondern durch 'list folder' gesammelt.

Vorbereitungen:
1. Das Script sichern und an den zu überwachenden Ordner anfügen.
2. Eine beliebige Datei in diesen Ordner kopieren und im Dialog den Zielordner auswählen
(muss nur einmal gemacht werden; der Pfad wird gespeichert).
3. Die Datei wieder entfernen.
4. Eine Text- oder Bilddatei vorbereiten. Inhalt egal. Name: "ende".

Und so läuft es ab:
1. Die Dateien kommen im überwachten Ordner an.
2. Wenn der Job beendet ist, kopiert man die Datei namens "ende" in den Hotfolder.
3. Erst jetzt wird der Handler 'moveFiles' aufgerufen.
4. Der Finder verschiebt die Datei "ende" in den Papierkorb.
5. Mit 'list folder' wird die Liste der Dateinamen erstellt.
6. Eine Wiederholungsschleife geht durch diese Liste, das Änderungsdatum der aktuellen Datei wird gespeichert.
7. Der Name der aktuellen Datei und die Zeit des Änderungsdatums werden laufend an eine Liste gehängt.
8. Anschliessend wird diese Liste sortiert und zwar basierend auf der Zeit (Element 2 jedes Elements).
9. Eine letzte Wiederholungsschleife geht durch die Liste. Bei jedem Umgang wird an den Pfad des Ordners
der Name der aktuellen Datei gehängt (Element 1 jedes Elements) und der Finder verschiebt die Datei in den
Zielordner. Der Befehl 'delay 30' sorgt jedes Mal für 30 Sekunden Pause.
---
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
         set targetFolder to (choose folder with prompt "Einen Zielordner für die Dateien wählen.") as Unicode text
      end timeout
      writePath(targetFolder)
   end try
   try
      targetFolder as alias
   on error
      with timeout of 300 seconds
         set targetFolder to (choose folder with prompt "Einen Zielordner für die Dateien wählen.") as Unicode text
      end timeout
      writePath(targetFolder)
   end try
   set aName to name of (info for item 1 of itemList) as string
   if aName is "ende" then
      moveFiles(sourceFolder)
   end if
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

on moveFiles(sourceFolder)
   set sourcePath to sourceFolder as Unicode text
   try
      tell application "Finder" to delete file (sourcePath & "ende")
   end try
   set targetPath to (path to preferences as Unicode text) & "targetPath.txt"
   set targetFolder to read file targetPath as Unicode text
   set fileList to list folder sourcePath without invisibles
   set defList to {}
   repeat with aFile in fileList
      set fileInfo to (info for file (sourcePath & aFile))
      set modDate to time of (modification date of fileInfo)
      set end of defList to {aFile, modDate}
   end repeat
   sortList(1, count of items of defList, defList, 2)
   repeat with i from 1 to count of defList
      delay 30
      set curPath to sourcePath & (item 1 of (item i of defList))
      try
         tell application "Finder" to move curPath to folder targetFolder with replacing
      end try
   end repeat
   display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 1
end moveFiles

on sortList(startWith1, itemCount, defList, elementToSortOn)
   set leftCounter to startWith1
   set rightCounter to itemCount
   set midItem to item elementToSortOn of (item ((startWith1 + itemCount) div 2) of defList)
   repeat until rightCounter is less than or equal to leftCounter
      repeat while item elementToSortOn of (item leftCounter of defList) is less than midItem
         set leftCounter to leftCounter + 1
      end repeat
      repeat while item elementToSortOn of (item rightCounter of defList) is greater than midItem
         set rightCounter to rightCounter - 1
      end repeat
      if leftCounter is less than or equal to rightCounter then
         set astore to item leftCounter of defList
         set item leftCounter of defList to item rightCounter of defList
         set item rightCounter of defList to astore
         set leftCounter to leftCounter + 1
         set rightCounter to rightCounter - 1
      end if
   end repeat
   if startWith1 is greater than rightCounter then
      my sortList(startWith1, rightCounter, defList, elementToSortOn)
   end if
   if itemCount is less than leftCounter then
      my sortList(leftCounter, itemCount, defList, elementToSortOn)
   end if
   return defList
end sortList

---
Ich werde Dir das Script zustellen und hoffe sehr, dass es klappen wird.

Gruss, Hans


als Antwort auf: [#420376]

Ordneraktion "first in first out"

Anonym
Beiträge gesamt: 22827

11. Nov 2005, 15:10
Beitrag # 8 von 13
Beitrag ID: #420383
Bewertung:
(2772 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

vielen Dank für die schnelle Reaktion. Leider werde ich es erst am Montag schaffen es auzutesten. Ich werde mich wieder melden.

Schönes Wochenende

Uwe


als Antwort auf: [#420376]

Ordneraktion "first in first out"

Anonym
Beiträge gesamt: 22827

14. Nov 2005, 14:30
Beitrag # 9 von 13
Beitrag ID: #420384
Bewertung:
(2772 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

ich habe mich gerade mit dem Script beschäftigt:
Unter Mac OS X 10.3.x läuft das Script zwar durch, aber die Dateien werden nicht in chronologischer Reihenfolge verschoben. Ich hatte z.B. 6 Dateien mit dem Änderungsdatum 13:20 Uhr? Kann es sein das das Script die Sekunden nicht miteinbezieht? Dann hatte ich 6 Dateien mit einem Änderungsdatum was sich jeweils um 1 Minuter unterschied - aber auch hier hatte ich keinen Erfolg.
Bei Bedarf kann ich Dir einmal ein paar Beispieldaten senden.

Gruß
Uwe


als Antwort auf: [#420376]

Ordneraktion "first in first out"

Hans Haesler
  
Beiträge gesamt: 5798

14. Nov 2005, 15:11
Beitrag # 10 von 13
Beitrag ID: #420385
Bewertung:
(2772 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

dass das Script läuft, ist schon mal nicht schlecht ... ;-)

Doch, doch, die Sekunden werden miteinbezogen. Und zwar holt sich das Script das Änderungsdatum
der Datei und verlangt davon die 'time', d.h. die Sekunden, welche seit Mitternacht veflossen sind.

Mit meinen Testdateien hat es auf jeden Fall geklappt. Anstelle von Namen habe ich Nummern verwendet.
Die Reihenfolge stimmte. Und wenn ich die Namen austauschte, war das Verschieben wie erwartet.

Wie werden denn die Dateien verschoben? Willkürlich? Oder gibt es ein Muster?

Ja, ich hätte gerne ein paar Beispieldateien. Aber bevor Du mir sie schickst, werde ich ein Testscript
schreiben, welches Du dann abspielen und mir das Ergebnis samt den Dateien zustellen kannst.

Gruss, Hans


als Antwort auf: [#420376]

Ordneraktion "first in first out"

Hans Haesler
  
Beiträge gesamt: 5798

14. Nov 2005, 21:59
Beitrag # 11 von 13
Beitrag ID: #420386
Bewertung:
(2772 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

das Rätsel ist gelöst. Das Problem ist im Sortierungs-Handler 'sortList'. Ich musste diesen
umpolen, damit die tieferen Werte an den Anfang der sortierten Liste gerückt werden. Zudem musste
ich die Symbole der Operatoren ausschreiben, weil der Server des Forums die komplizierten darunter
als Fragezeichen wiedergibt. Dabei habe ich eine Umkehrung zuviel gemacht. In den beiden Tests am
Schluss des Handlers müssen 'is greater than' und 'is less than' untereinander ausgetauscht werden.

Allerdings ist mir noch nicht klar, warum die Reihenfolge manchmal doch stimmt. Dennoch: Hier ist
der korrigierte Handler. Und: Entschuldige bitte mein Versehen.
---
on sortList(startWith1, itemCount, defList, elementToSortOn)
   set leftCounter to startWith1
   set rightCounter to itemCount
   set midItem to item elementToSortOn of (item ((startWith1 + itemCount) div 2) of defList)
   repeat until rightCounter is less than or equal to leftCounter
      repeat while item elementToSortOn of (item leftCounter of defList) is less than midItem
         set leftCounter to leftCounter + 1
      end repeat
      repeat while item elementToSortOn of (item rightCounter of defList) is greater than midItem
         set rightCounter to rightCounter - 1
      end repeat
      if leftCounter is less than or equal to rightCounter then
         set astore to item leftCounter of defList
         set item leftCounter of defList to item rightCounter of defList
         set item rightCounter of defList to astore
         set leftCounter to leftCounter + 1
         set rightCounter to rightCounter - 1
      end if
   end repeat
   if startWith1 is less than rightCounter then
      my sortList(startWith1, rightCounter, defList, elementToSortOn)
   end if
   if itemCount is greater than leftCounter then
      my sortList(leftCounter, itemCount, defList, elementToSortOn)
   end if
   return defList
end sortList

---
Ich werde Dir am Dienstagmorgen das korrigierte Script zustellen.

Gruss, Hans


als Antwort auf: [#420376]

Ordneraktion "first in first out"

Anonym
Beiträge gesamt: 22827

15. Nov 2005, 14:22
Beitrag # 12 von 13
Beitrag ID: #420387
Bewertung:
(2772 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

das Script läuft jetzt einwandfrei. Vielen Dank dafür. Jetzt liegt es an den nachfolgenden Programmen (Flightcheck WF, Photoshop, EFI) alles richtig zu verarbeiten. Ich bin mal gespannt welches Modul dann "quertreibt".

Vielen Dank nochmals und Grüße aus Ahaus

Uwe


als Antwort auf: [#420376]

Ordneraktion "first in first out"

Hans Haesler
  
Beiträge gesamt: 5798

15. Nov 2005, 14:55
Beitrag # 13 von 13
Beitrag ID: #420388
Bewertung:
(2772 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

bitteschön. Danke für die Rückmeldung. Die weiteren Akteure haben klingende Namen.
Da sollte doch nichts mehr schiefgehen. Gutes Gelingen! :-)

Gruss, Hans


als Antwort auf: [#420376]
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
05.02.2021 - 05.11.2021

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 05. Feb. 2021, 13.00 Uhr - Freitag, 05. Nov. 2021, 17.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Ja

Organisator: Digicomp Academy AG

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

digicomp.ch/d/9PM

Veranstaltungen
01.03.2021 - 05.03.2021

Persönlichkeitsentwicklung

Online
Montag, 01. März 2021, 00.17 Uhr - Freitag, 05. März 2021, 00.18 Uhr

Webinar

Personal Power Coaching - Um was geht es? ​ Potenzialentfaltung: Potenzial entdecken und entfalten Talente entdecken: Deine Talente und Fähigkeiten erkennen und loslegen Gewohnheiten: schlechte Gewohnheiten durch Positive ersetzen Selbstbewusstsein stärken: Dein Bewusstsein stärken Eigendynamik entwickeln: Mehr Erfolg durch Eigenverantwortung & Disziplin Ängste kontrollieren: Ängste als Antrieb nutzen Entscheidungen treffen: Mit mehr Mut an die Sache ran! Lebensenergie steigern: Deine Lebensenergie steigern und aufrechterhalten Ziele erreichen: Ziele setzen und übertreffen! Motivationssteigerung: Mehr Erfolg durch Selbstmotivation Selbstvertrauen: Selbstvertrauen auf- und ausbauen

Details:
https://www.snfa.ch/swiss-personal-power-birolisik

Ja

Organisator: Birol Isik

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

https://www.snfa.ch/swiss-personal-power-birolisik

Neuste Foreneinträge


Serien-Dateinamenänderung (mit Automator?) "nur die ersten 7 Schreibstellen"

Barrierefreies PDF> keine klickbaren Fußnoten im PDF (Tagbaum)

Arbeitsfarbraum ändert sich bei neu angelegten Dokumenten von selbst

Adobe Acrobat DC Namen für Speicherung vorgeben

Update Problem

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

Illustrator Datei aktualisieren

Schwarz überdruckt nicht

Schwarz überdruckt nicht

CC 2020: Problem mit Textumfluss mit verankerten Objekten
medienjobs