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