Hallo Stephan,
jetzt ist die erste Version des Dateien-Verschiebungs-Scripts bereit. Ich habe es Dir
per E-mail zugestellt, weil es wichtig ist, dass der Code richtig gesichert ist:
Als Applikation und beide Checkboxen aktiviert (Unterdrücken des Startbildes und – vor
allem – dass das Progrämmchen im Hintergrund laufen wird).
Das Script wird wie ein Programm durch Doppelklick auf sein Icon gestartet. Du kannst
auch ein Alias davon im Apfel-Menü unterbringen. Zum Beenden: Wie jedes andere Programm
im Programmumschalter auswählen und Befehl-Q tippen.
Im Script sorgt der 'idle'-Handler dafür, dass der "In"-Ordner nicht unzählige Male pro
Sekunde abgefragt wird, sondern mit einem vernünftigen Intervall, welches mit dem
Return-Wert eingestellt wird.
Wenn der Mac gerade mal nichts zu tun hat, ist sein Zustand 'idle'. Diese Gelegenheit
wartet das Script ab, um im "In"-Ordner nachzuschauen, ob neue Dateien eingetroffen sind.
Per Vorgabe habe ich 'return 1' eingesetzt. Einmal pro Sekunde wird also der Inhalt des
"In"-Ordners geprüft. Weil aber das Kopieren und Verschieben bestimmt länger dauern
wird, sorgt die Variable 'okay' dafür, dass eine weitere Dateiliste erst erstellt wird,
wenn die aktuelle abgearbeitet ist.
Zu Beginn ist der Wert von 'okay' also 'true'. Bevor das Script in die Wiederholungsschleife
geht, um sich um die Dateien zu kümmern, wird 'okay' zu 'false'. Wenn alle Dateien verschoben
sind, wird die Schleife verlasssen, 'okay' wird auf 'true' gesetzt und es beginnt von vorn.
In dieser ersten Version habe ich auf das Prüfen, ob eine Datei komplett im "In"-Ordner
angekommen ist, verzichtet. Ein kurzer Test hat ergeben, dass dies nicht notwendig ist.
Doch vielleicht wirst Du in der Praxis andere Erfahrungen machen.
---
property InOrdner : "restore:In:"
property OutOrdner : "restore:Out:"
global okay
set okay to true
on idle
checkFolder()
return 1 -- das Abfrage-Intervall in Sekunden
end idle
on checkFolder()
if okay = true then
set okay to false
tell application "Finder" to set itemList to every item of folder InOrdner
repeat with i from 1 to count of itemList
set aliasPath to (item i of itemList) as alias
set stringPath to aliasPath as string
if not (stringPath ends with ":") then
tell application "Finder" to set fileName to name of file stringPath
set ctr to 1
repeat
try
alias (OutOrdner & fileName) as string
on error
exit repeat
end try
set fileName to (fileName & ctr) as string
set ctr to ctr + 1
end repeat
if ctr = 1 then
try
tell application "Finder" to move file stringPath to folder OutOrdner
end try
else
try
tell application "Finder" to set name of file stringPath to fileName
end try
try
tell application "Finder" to move file aliasPath to folder OutOrdner
end try
end if
end if
end repeat
set okay to true
end if
end checkFolder
---
So. Nun hoffe ich, dass wir mit diesem Ansatz mehr Erfolg haben werden, als mit der Ordneraktion.
Gruss, Hans
als Antwort auf: [#419528]