Applescript: Empfangene Dateien in Ordner sortieren

S

snoopz

Neues Mitglied
Thread Starter
Dabei seit
18.03.2010
Beiträge
12
Reaktionspunkte
0
Hallo liebe Community,

ich trete ja ungern als Bittsteller auf, aber in diesem Fall fühle ich mich mit Applescript überfordert (ich bin eher der Automator-User) und vielleicht kann mir jemand einen Ansatz für ein Script liefern, welches folgende Aufgabe zu erfüllen hätte:

Ich bekomme täglich Dateien, die immer nach einem bestimmten Schema benannt sind. Zur Vereinfachung folgendes Beispiel:

Parameter 1 _ Datum _ Name _ Parameter 2 . Extension

Diese Dateien bekomme ich per Netzwerk, FTP, USB-Stick.. im Grunde egal. Sie landen jedenfalls alle in einem Eingangsordner auf meinem System und ich würde gerne ein Script benutzen das ich als Ordnerdienst laufen lassen kann um die Dateien in Unterordner zu sortieren.

Mein Ansatz:

Die einzelnen Teile des Dateinamens sind immer mit einem Unterstrich getrennt. Daran müsste sich das Script wohl orientieren.

Als erstes soll ein Unterordner erzeugt werden, der aus Parameter 1 und Datum besteht (Unterstrich ersetzen durch ein Leerzeichen).

Danach soll (von hinten aus gelesen) auf Basis des zweiten Parameters ein Unterunterordner erzeugt werden. Und dort soll die Datei hin verschoben werden.

Warum von hinten? Weil ich nicht garantieren kann das in "Name" nicht auch ein Unterstrich steht. Ich kann mit dem Script also nicht von Unterstrich zu Unterstrich lesen, da Parameter 2 mal nach dem 3. mal auch nach dem 7. Unterstrich beginnt.


Da dieses Script mir sehr viel Arbeit abnehmen würde, wäre ich bereit auch jemandem dafür etwas zu bezahlen. Und falls mir jemand ohne Entgelt hilft, dann würde ich einen Betrag an betterplace.org spenden.
 
Hallo,

probier das mal:

Code:
[COLOR=#012FBE][FONT=Verdana][COLOR=#000000][B]on[/B] [/COLOR][B]adding folder items to [/B][COLOR=#4f8f00]this_folder [/COLOR]after receiving [COLOR=#4f8f00]these_items[/COLOR][/FONT][/COLOR]
[FONT=Verdana]    [B]repeat[/B] [B]with[/B] [COLOR=#4f8f00]anItem[/COLOR] [B]in[/B] [COLOR=#4f8f00]these_items[/COLOR][/FONT]
[FONT=Verdana]        [B]tell[/B] [COLOR=#0433ff][I]application[/I][/COLOR] "Finder"[/FONT]
[FONT=Verdana]            [B]set[/B] [COLOR=#4f8f00]theName[/COLOR] [B]to[/B] [COLOR=#812fdc]name[/COLOR] [B]of[/B] [COLOR=#4f8f00]anItem[/COLOR][/FONT]
[COLOR=#812FDC][FONT=Verdana][COLOR=#000000]            [B]set[/B] [/COLOR]AppleScript[COLOR=#000000]'s [/COLOR]text item delimiters[COLOR=#000000] [B]to[/B] "_"[/COLOR][/FONT][/COLOR]
[FONT=Verdana]            [B]set[/B] [COLOR=#4f8f00]nameFolder1[/COLOR] [B]to[/B] ([COLOR=#0433ff][I]text item[/I][/COLOR] 1 [B]of[/B] [COLOR=#4f8f00]theName[/COLOR] [B]as[/B] [COLOR=#0433ff][I]text[/I][/COLOR]) & [COLOR=#812fdc]space[/COLOR] & [COLOR=#0433ff][I]text item[/I][/COLOR] 2 [B]of[/B] [COLOR=#4f8f00]theName[/COLOR] [B]as[/B] [COLOR=#0433ff][I]text[/I][/COLOR][/FONT]
[FONT=Verdana]            [B]set[/B] [COLOR=#4f8f00]nameFolder2[/COLOR] [B]to[/B] ([COLOR=#0433ff][I]text item[/I][/COLOR] -1 [B]of[/B] [COLOR=#4f8f00]theName[/COLOR] [B]as[/B] [COLOR=#0433ff][I]text[/I][/COLOR])[/FONT]
[COLOR=#812FDC][FONT=Verdana][COLOR=#000000]            [B]set[/B] [/COLOR]AppleScript[COLOR=#000000]'s [/COLOR]text item delimiters[COLOR=#000000] [B]to[/B] ""[/COLOR][/FONT][/COLOR]
[FONT=Verdana]            [B]set[/B] [COLOR=#4f8f00]nameFolder2[/COLOR] [B]to[/B] [COLOR=#0433ff][I]items[/I][/COLOR] 1 [B]thru[/B] -(([COLOR=#0433ff][B]count[/B][/COLOR] [B]of[/B] ([COLOR=#812fdc]name extension[/COLOR] [B]of[/B] [COLOR=#4f8f00]anItem[/COLOR] [B]as[/B] [COLOR=#0433ff][I]string[/I][/COLOR])) + 2) [B]of[/B] [COLOR=#4f8f00]nameFolder2[/COLOR] [B]as[/B] [COLOR=#0433ff][I]string[/I][/COLOR][/FONT]
[COLOR=#4F8F00][FONT=Verdana][COLOR=#000000]            [B]set[/B] [/COLOR]thePath[COLOR=#000000] [B]to[/B] [/COLOR][COLOR=#812fdc]POSIX path[/COLOR][COLOR=#000000] [B]of[/B] [/COLOR]this_folder[COLOR=#000000] & [/COLOR]nameFolder1[COLOR=#000000] & "/" & [/COLOR]nameFolder2[/FONT][/COLOR]
[FONT=Verdana]            [COLOR=#012fbe][B]do shell script[/B][/COLOR] "mkdir -p " & [COLOR=#812fdc]quoted form[/COLOR] [B]of[/B] [COLOR=#4f8f00]thePath[/COLOR][/FONT]
[COLOR=#812FDC][FONT=Verdana][COLOR=#012fbe][B]            do shell script[/B][/COLOR][COLOR=#000000] "mv " & [/COLOR]quoted form[COLOR=#000000] [B]of[/B] [/COLOR]POSIX path[COLOR=#000000] [B]of[/B] [/COLOR][COLOR=#4f8f00]anItem[/COLOR][COLOR=#000000] & [/COLOR]space[COLOR=#000000] & [/COLOR]quoted form[COLOR=#000000] [B]of[/B] [/COLOR][COLOR=#4f8f00]thePath[/COLOR][/FONT][/COLOR]
[FONT=Verdana]        [B]end[/B] [B]tell[/B][/FONT]
[FONT=Verdana]    [B]end[/B] [B]repeat[/B][/FONT]
[COLOR=#012FBE][FONT=Verdana][COLOR=#000000][B]end[/B] [/COLOR][B]adding folder items to[/B][/FONT][/COLOR]
 
Hallo Pill,

vielen Dank schon mal für deine (wirklich sehr schnelle) Antwort. Gleich einmal zwei Fragen:

1. Wie binde ich das Script ein? Über Automator einen Ordnerdienst der dann das Script startet? Oder wie ist das gedacht?

2. Soweit ich das sehe findet hier keine Abfrage statt, ob der entsprechende Ordner schon existiert oder ist das "-p" bei mkdir?
 
Zu 1.: Du speicherst das als Skript und legst das in /Users/DeinName/Library/Scripts/Folder Action Scripts/. Dann kannst du auf deinen Ordner rechtsklicken->Dienste->Ordneraktionen konfigurieren auswählen und in dem Auswahlfenster dann dein Skript wählen.

Zu 2.: Ist bei mkdir der Pfad bereits vorhanden, dann bleibt der Ordner einfach bestehen. Das -p sorgt dafür, dass auch etwaige nicht vorhandene Unterordner des Pfades erstellt werden. So können sehr einfach ganze Verzeichnisstrukturen angelegt werden.
 
  • Gefällt mir
Reaktionen: chebfarid
Hallo Pill,

erneut vielen Dank für deine schnelle Antwort. Ich habe das mal getestet und im Grunde funktioniert es einwandfrei. "Im Grunde" schreibe ich deshalb, weil es einen kleinen Haken hat: es bleiben manche Dateien liegen, selbst wenn sie vom Namen her die korrekten Parameter aufweisen. Kann es sein, dass das Skript nicht wartet ob eine Datei fertig kopiert/herunter geladen/verschoben wurde?

Die Frage ist also: wann greift "adding folder items to"? Sobald der Dateitransfer gestartet wurde oder sobald er abgeschlossen ist?
 
Kann ich ehrlich gesagt nicht genau sagen. Ich habe mal noch ein delay eingebaut, das Skript wartet so 10s bevor es los geht. Vielleicht behebt das das Problem bereits. Wie groß sind denn die Dateien ungefähr?

Code:
[COLOR=#012FBE][FONT=Verdana][COLOR=#000000][B]on[/B] [/COLOR][B]adding folder items to [/B][COLOR=#4f8f00]this_folder [/COLOR]after receiving [COLOR=#4f8f00]these_items[/COLOR][/FONT][/COLOR]
[COLOR=#012FBE][FONT=Verdana][COLOR=#000000]    [/COLOR][B]delay[/B][COLOR=#000000] 10[/COLOR][/FONT][/COLOR]
[FONT=Verdana]    [B]repeat[/B] [B]with[/B] [COLOR=#4f8f00]anItem[/COLOR] [B]in[/B] [COLOR=#4f8f00]these_items[/COLOR][/FONT]
[FONT=Verdana]        [B]tell[/B] [COLOR=#0433ff][I]application[/I][/COLOR] "Finder"[/FONT]
[FONT=Verdana]            [B]set[/B] [COLOR=#4f8f00]theName[/COLOR] [B]to[/B] [COLOR=#812fdc]name[/COLOR] [B]of[/B] [COLOR=#4f8f00]anItem[/COLOR][/FONT]
[COLOR=#812FDC][FONT=Verdana][COLOR=#000000]            [B]set[/B] [/COLOR]AppleScript[COLOR=#000000]'s [/COLOR]text item delimiters[COLOR=#000000] [B]to[/B] "_"[/COLOR][/FONT][/COLOR]
[FONT=Verdana]            [B]set[/B] [COLOR=#4f8f00]nameFolder1[/COLOR] [B]to[/B] ([COLOR=#0433ff][I]text item[/I][/COLOR] 1 [B]of[/B] [COLOR=#4f8f00]theName[/COLOR] [B]as[/B] [COLOR=#0433ff][I]text[/I][/COLOR]) & [COLOR=#812fdc]space[/COLOR] & [COLOR=#0433ff][I]text item[/I][/COLOR] 2 [B]of[/B] [COLOR=#4f8f00]theName[/COLOR] [B]as[/B] [COLOR=#0433ff][I]text[/I][/COLOR][/FONT]
[FONT=Verdana]            [B]set[/B] [COLOR=#4f8f00]nameFolder2[/COLOR] [B]to[/B] ([COLOR=#0433ff][I]text item[/I][/COLOR] -1 [B]of[/B] [COLOR=#4f8f00]theName[/COLOR] [B]as[/B] [COLOR=#0433ff][I]text[/I][/COLOR])[/FONT]
[COLOR=#812FDC][FONT=Verdana][COLOR=#000000]            [B]set[/B] [/COLOR]AppleScript[COLOR=#000000]'s [/COLOR]text item delimiters[COLOR=#000000] [B]to[/B] ""[/COLOR][/FONT][/COLOR]
[FONT=Verdana]            [B]set[/B] [COLOR=#4f8f00]nameFolder2[/COLOR] [B]to[/B] [COLOR=#0433ff][I]items[/I][/COLOR] 1 [B]thru[/B] -(([COLOR=#0433ff][B]count[/B][/COLOR] [B]of[/B] ([COLOR=#812fdc]name extension[/COLOR] [B]of[/B] [COLOR=#4f8f00]anItem[/COLOR] [B]as[/B] [COLOR=#0433ff][I]string[/I][/COLOR])) + 2) [B]of[/B] [COLOR=#4f8f00]nameFolder2[/COLOR] [B]as[/B] [COLOR=#0433ff][I]string[/I][/COLOR][/FONT]
[COLOR=#4F8F00][FONT=Verdana][COLOR=#000000]            [B]set[/B] [/COLOR]thePath[COLOR=#000000] [B]to[/B] [/COLOR][COLOR=#812fdc]POSIX path[/COLOR][COLOR=#000000] [B]of[/B] [/COLOR]this_folder[COLOR=#000000] & [/COLOR]nameFolder1[COLOR=#000000] & "/" & [/COLOR]nameFolder2[/FONT][/COLOR]
[FONT=Verdana]            [COLOR=#012fbe][B]do shell script[/B][/COLOR] "mkdir -p " & [COLOR=#812fdc]quoted form[/COLOR] [B]of[/B] [COLOR=#4f8f00]thePath[/COLOR][/FONT]
[COLOR=#812FDC][FONT=Verdana][COLOR=#000000]            [/COLOR][COLOR=#012fbe][B]do shell script[/B][/COLOR][COLOR=#000000] "mv " & [/COLOR]quoted form[COLOR=#000000] [B]of[/B] [/COLOR]POSIX path[COLOR=#000000] [B]of[/B] [/COLOR][COLOR=#4f8f00]anItem[/COLOR][COLOR=#000000] & [/COLOR]space[COLOR=#000000] & [/COLOR]quoted form[COLOR=#000000] [B]of[/B] [/COLOR][COLOR=#4f8f00]thePath[/COLOR][/FONT][/COLOR]
[FONT=Verdana]        [B]end[/B] [B]tell[/B][/FONT]
[FONT=Verdana]    [B]end[/B] [B]repeat[/B][/FONT]
[COLOR=#012FBE][FONT=Verdana][COLOR=#000000][B]end[/B] [/COLOR][B]adding folder items to[/B][/FONT][/COLOR]
 
Die Dateien haben ganz unterschiedliche Größe.. von 100MB bis hin zu 100GB kann da alles dabei sein. Deinen Delay habe ich jetzt noch nicht eingebaut, aber ich habe folgende Beobachtung machen können:

Es scheint unabhängig von der Dateigröße hin und wieder vor zu kommen, dass eine Datei nicht durch das Skript verschoben wird. Eine Regelmäßigkeit kann ich da erst mal nicht entdecken. Interessanterweise greift das Skript dann, wenn ich die Datei kurz aus dem Ordner verschiebe und dort hin zurück packe und verschiebt die Datei doch. Die Parameter stimmen also.

Auch ist die Zeit zwischen dem Eingang des Files und dem Verschieben unterschiedlich. Das lässt mich vermuten, dass OSX das Skript nur in einem festgelegten Zeitintervall ausführt. Möglicherweise kommen die Dateien die nicht verschoben werden zu einem ungünstigen Zeitpunkt rein (während es gerade läuft) oder ähnliches...
 
Ich könnte das Skript so umändern, dass nicht nur die neu hinzugefügten Dateien verschoben werden, sondern einfach alle Dateien in dem Ordner (bis auf Ordner natürlich). Meinst du das würde dir etwas bringen?
 
Ich habe mal ein wenig den Prozess "Verteiler für Ordneraktionen" in der Aktivitätsanzeige beobachtet. Der Prozess scheint eine Idle-Time zu haben, jedoch alle paar Sekunden kurz anzuspringen, selbst wenn kein neues File vorhanden ist. Es scheint also keine "Dauerüberwachung" des Orders zu sein, sondern nur eine Intervallüberwachung. Unter welchen Bedingungen er das File aber auslässt, das konnte ich noch nicht beobachten.

Das Skript umzuändern wäre eine gute Idee.

Was würde eigentlich passieren, wenn da eine Datei landet die nicht das entsprechende Namenschema hat?

Edit:
Und - damit ich und alle Mitleser ggf. noch was lernen können - noch die Frage: Wieso setzt du den Delimiter eigentlich auf "" zurück am Ende des Skripts?
 
Gut, hier nochmal überarbeitet:

Code:
[COLOR=#012FBE][FONT=Verdana][COLOR=#000000][B]on[/B] [/COLOR][B]adding folder items to [/B][COLOR=#4f8f00]this_folder [/COLOR]after receiving [COLOR=#4f8f00]these_items[/COLOR][/FONT][/COLOR]
[FONT=Verdana]    [B]tell[/B] [COLOR=#0433ff][I]application[/I][/COLOR] "Finder"[/FONT]
[FONT=Verdana]        [B]repeat[/B] [B]with[/B] [COLOR=#4f8f00]anItem[/COLOR] [B]in[/B] ([B]every[/B] [COLOR=#0433ff][I]item[/I][/COLOR] [B]of[/B] [COLOR=#4f8f00]this_folder[/COLOR] [B]whose[/B] [COLOR=#0433ff][I]class[/I][/COLOR] [B]is[/B] [B]not[/B] [COLOR=#0433ff][I]folder[/I][/COLOR])[/FONT]
[FONT=Verdana]            [B]set[/B] [COLOR=#4f8f00]anItem[/COLOR] [B]to[/B] [COLOR=#4f8f00]anItem[/COLOR] [B]as[/B] [COLOR=#0433ff][I]alias[/I][/COLOR][/FONT]
[FONT=Verdana]            [B]set[/B] [COLOR=#4f8f00]theName[/COLOR] [B]to[/B] [COLOR=#812fdc]name[/COLOR] [B]of[/B] [COLOR=#4f8f00]anItem[/COLOR][/FONT]
[FONT=Verdana]            [B]if[/B] ([COLOR=#0433ff][B]count[/B][/COLOR] [B]of[/B] ([COLOR=#012fbe][B]do shell script[/B][/COLOR] "echo " & [COLOR=#812fdc]quoted form[/COLOR] [B]of[/B] [COLOR=#4f8f00]theName[/COLOR] & " | sed 's/[^_]//g'")) > 1 [B]then[/B][/FONT]
[COLOR=#812FDC][FONT=Verdana][COLOR=#000000]                [B]set[/B] [/COLOR]AppleScript[COLOR=#000000]'s [/COLOR]text item delimiters[COLOR=#000000] [B]to[/B] "_"[/COLOR][/FONT][/COLOR]
[FONT=Verdana]                [B]set[/B] [COLOR=#4f8f00]nameFolder1[/COLOR] [B]to[/B] ([COLOR=#0433ff][I]text item[/I][/COLOR] 1 [B]of[/B] [COLOR=#4f8f00]theName[/COLOR] [B]as[/B] [COLOR=#0433ff][I]text[/I][/COLOR]) & [COLOR=#812fdc]space[/COLOR] & [COLOR=#0433ff][I]text item[/I][/COLOR] 2 [B]of[/B] [COLOR=#4f8f00]theName[/COLOR] [B]as[/B] [COLOR=#0433ff][I]text[/I][/COLOR][/FONT]
[FONT=Verdana]                [B]set[/B] [COLOR=#4f8f00]nameFolder2[/COLOR] [B]to[/B] ([COLOR=#0433ff][I]text item[/I][/COLOR] -1 [B]of[/B] [COLOR=#4f8f00]theName[/COLOR] [B]as[/B] [COLOR=#0433ff][I]text[/I][/COLOR])[/FONT]
[COLOR=#812FDC][FONT=Verdana][COLOR=#000000]                [B]set[/B] [/COLOR]AppleScript[COLOR=#000000]'s [/COLOR]text item delimiters[COLOR=#000000] [B]to[/B] ""[/COLOR][/FONT][/COLOR]
[FONT=Verdana]                [B]set[/B] [COLOR=#4f8f00]nameFolder2[/COLOR] [B]to[/B] [COLOR=#0433ff][I]items[/I][/COLOR] 1 [B]thru[/B] -(([COLOR=#0433ff][B]count[/B][/COLOR] [B]of[/B] ([COLOR=#812fdc]name extension[/COLOR] [B]of[/B] [COLOR=#4f8f00]anItem[/COLOR] [B]as[/B] [COLOR=#0433ff][I]string[/I][/COLOR])) + 2) [B]of[/B] [COLOR=#4f8f00]nameFolder2[/COLOR] [B]as[/B] [COLOR=#0433ff][I]string[/I][/COLOR][/FONT]
[COLOR=#4F8F00][FONT=Verdana][COLOR=#000000]                [B]set[/B] [/COLOR]thePath[COLOR=#000000] [B]to[/B] [/COLOR][COLOR=#812fdc]POSIX path[/COLOR][COLOR=#000000] [B]of[/B] [/COLOR]this_folder[COLOR=#000000] & [/COLOR]nameFolder1[COLOR=#000000] & "/" & [/COLOR]nameFolder2[/FONT][/COLOR]
[FONT=Verdana]                [COLOR=#012fbe][B]do shell script[/B][/COLOR] "mkdir -p " & [COLOR=#812fdc]quoted form[/COLOR] [B]of[/B] [COLOR=#4f8f00]thePath[/COLOR][/FONT]
[COLOR=#812FDC][FONT=Verdana][COLOR=#000000]                [/COLOR][COLOR=#012fbe][B]do shell script[/B][/COLOR][COLOR=#000000] "mv " & [/COLOR]quoted form[COLOR=#000000] [B]of[/B] [/COLOR]POSIX path[COLOR=#000000] [B]of[/B] [/COLOR][COLOR=#4f8f00]anItem[/COLOR][COLOR=#000000] & [/COLOR]space[COLOR=#000000] & [/COLOR]quoted form[COLOR=#000000] [B]of[/B] [/COLOR][COLOR=#4f8f00]thePath[/COLOR][/FONT][/COLOR]
[FONT=Verdana]            [B]end[/B] [B]if[/B][/FONT]
[FONT=Verdana]        [B]end[/B] [B]repeat[/B][/FONT]
[FONT=Verdana]    [B]end[/B] [B]tell[/B][/FONT]
[FONT=Verdana][COLOR=#000000][B]end[/B] [/COLOR][B]adding folder items to
[/B]

Es werden jetzt immer alle Dateien, die keine Ordner sind und mindestens 2 Unterstriche enthalten, verschoben.

Die text item delimiters trennen jedes einzelne Textzeichen in einem String. Wenn ich also die delimiters zu "_" ändere und einen String
Parameter1_Datum_Name_Parameter2.Extension[/FONT] in eine Liste umwandle, dann erhalte ich {"Parameter1", "Datum", "Name", "Parameter2.Extension"}. In der Zeile set nameFolder2 to items 1 thru -((count of (name extension of anItem as string)) + 2) of nameFolder2 as string wandle ich jetzt wieder eine Liste (items 1 thru ...) in einen String um (as string). Wenn ich vorher die delimiters nicht wieder zurücksetzen würde, dann würde sich zwischen jedem Buchstaben ein Unterstrich befinden.

Abgesehen davon sollte man die text item delimiters immer wieder auf den Standart zurücksetzen, dann kommt es später nicht zu unvorhersehbaren Fehlern.
 
  • Gefällt mir
Reaktionen: snoopz
Danke für die Erklärungen. Das leuchtet mir soweit ein, denke ich.

Ich habe deine neue Version mal getestet und bis auf einen Schönheitsfehler ist das wirklich, wirklich hilfreich!

Ich sehe, denke ich, auch langsam das Problem das auftritt. Welche Datei er liegen lässt ist immer die zuletzt hinzu gekommene. Beim nächsten Skriptdurchlauf wird diese dann auch verschoben, dafür bleibt eine andere liegen. Vermutlich kommt sie in dem Augenblick rein in dem das Skript gerade durchläuft und ist daher nicht mehr Teil der Abfrage.

Soweit ist das ja kein Problem. Solange immer neue Dateien nachkommen werden liegengebliebene vom vorherigen Durchlauf mit sortiert. Einen Schönheitsfehler hat das ganze natürlich: Da diese Operationen meistens über Nacht laufen kommt man irgendwann an dem Punkt an dem (für diese Nacht) keine neuen Dateien hinzu kommen. Also bleibt wohl eine letzte Datei liegen.

Meine Idee wäre es, dass man das Skript vielleicht anders triggert. Also nicht bei "adding folder items to" - sondern, sagen wir mal, alle 30 Sekunden per default. Wenn keine Files im Hauptordner liegen läuft es dann leer, was ja nicht tragisch ist. Sobald dann aber Files vorhanden sind werden sie beim Durchlaufen verschoben.

Macht das nicht mehr Sinn? Das sollte der Systemperformance ja keinen Abbruch tun, wenn es regelmäßig abgefragt wird, oder?
 
Folgendes Skript musst du nun als Programm speichern mit der Option "Nach run-Handler anzeigen". Das Programm kannst du dann den Anmeldeobjekten hinzufügen. Beim ersten Start wird es dich nach dem zu überwachenden Ordner fragen. Das Programm wird dann alle 30s ausgeführt.

Code:
[B]property [/B][COLOR=#4F8F00][FONT=Verdana]this_folder[/FONT][/COLOR][FONT=Verdana] : ""
[/FONT][FONT=Verdana][B]property[/B] [COLOR=#4f8f00]isRunning[/COLOR] : [COLOR=#5d3292]false[/COLOR][/FONT]
[FONT=Verdana]
[/FONT]
[COLOR=#5E6161][FONT=Verdana]--Beim ersten Start nach Ordner fragen:[/FONT][/COLOR]
[FONT=Verdana][B]on[/B] [COLOR=#0433ff][B]run[/B][/COLOR][/FONT]
[FONT=Verdana]    [B]if[/B] [COLOR=#4f8f00]this_folder[/COLOR] [B]is[/B] "" [B]then[/B][/FONT]
[FONT=Verdana]        [B]set[/B] [COLOR=#4f8f00]this_folder[/COLOR] [B]to[/B] [COLOR=#012fbe][B]choose folder[/B][/COLOR] [COLOR=#012fbe]with prompt[/COLOR] "Wählen Sie den Ordner aus: "[/FONT]
[FONT=Verdana]    [B]end[/B] [B]if[/B][/FONT]
[FONT=Verdana][B]end[/B] [COLOR=#0433ff][B]run[/B][/COLOR][/FONT]
[FONT=Verdana]
[/FONT]
[COLOR=#0433FF][FONT=Verdana][COLOR=#000000][B]on[/B] [/COLOR][B]idle[/B][/FONT][/COLOR]
[FONT=Verdana]    [B]set[/B] [COLOR=#4f8f00]isRunning[/COLOR] [B]to[/B] [COLOR=#5d3292]true[/COLOR][/FONT]
[FONT=Verdana]    [B]tell[/B] [COLOR=#0433ff][I]application[/I][/COLOR] "Finder"[/FONT]
[COLOR=#5E6161][FONT=Verdana][COLOR=#000000]        [/COLOR]--Alle Dateien außer Ordner abfragen[/FONT][/COLOR]
[FONT=Verdana]        [B]set[/B] [COLOR=#4f8f00]theFiles[/COLOR] [B]to[/B] ([B]every[/B] [COLOR=#0433ff][I]item[/I][/COLOR] [B]of[/B] [COLOR=#4f8f00]this_folder[/COLOR] [B]whose[/B] [COLOR=#0433ff][I]class[/I][/COLOR] [B]is[/B] [B]not[/B] [COLOR=#0433ff][I]folder[/I][/COLOR])[/FONT]
[FONT=Verdana]        [B]repeat[/B] [B]with[/B] [COLOR=#4f8f00]anItem[/COLOR] [B]in[/B] [COLOR=#4f8f00]theFiles[/COLOR][/FONT]
[FONT=Verdana]            [B]set[/B] [COLOR=#4f8f00]anItem[/COLOR] [B]to[/B] [COLOR=#4f8f00]anItem[/COLOR] [B]as[/B] [COLOR=#0433ff][I]alias[/I][/COLOR][/FONT]
[FONT=Verdana]            [B]set[/B] [COLOR=#4f8f00]theName[/COLOR] [B]to[/B] [COLOR=#812fdc]name[/COLOR] [B]of[/B] [COLOR=#4f8f00]anItem[/COLOR][/FONT]
[COLOR=#5E6161][FONT=Verdana][COLOR=#000000]            [/COLOR]--Alle Dateien filtern, die mindestens 2 Unterstriche haben[/FONT][/COLOR]
[FONT=Verdana]            [B]if[/B] ([COLOR=#0433ff][B]count[/B][/COLOR] [B]of[/B] ([COLOR=#012fbe][B]do shell script[/B][/COLOR] "echo " & [COLOR=#812fdc]quoted form[/COLOR] [B]of[/B] [COLOR=#4f8f00]theName[/COLOR] & " | sed 's/[^_]//g'")) > 1 [B]then[/B][/FONT]
[COLOR=#5E6161][FONT=Verdana][COLOR=#000000]                [/COLOR]--Name von den Zielordnern bestimmen[/FONT][/COLOR]
[COLOR=#812FDC][FONT=Verdana][COLOR=#000000]                [B]set[/B] [/COLOR]AppleScript[COLOR=#000000]'s [/COLOR]text item delimiters[COLOR=#000000] [B]to[/B] "_"[/COLOR][/FONT][/COLOR]
[FONT=Verdana]                [B]set[/B] [COLOR=#4f8f00]nameFolder1[/COLOR] [B]to[/B] ([COLOR=#0433ff][I]text item[/I][/COLOR] 1 [B]of[/B] [COLOR=#4f8f00]theName[/COLOR] [B]as[/B] [COLOR=#0433ff][I]text[/I][/COLOR]) & [COLOR=#812fdc]space[/COLOR] & [COLOR=#0433ff][I]text item[/I][/COLOR] 2 [B]of[/B] [COLOR=#4f8f00]theName[/COLOR] [B]as[/B] [COLOR=#0433ff][I]text[/I][/COLOR][/FONT]
[FONT=Verdana]                [B]set[/B] [COLOR=#4f8f00]nameFolder2[/COLOR] [B]to[/B] ([COLOR=#0433ff][I]text item[/I][/COLOR] -1 [B]of[/B] [COLOR=#4f8f00]theName[/COLOR] [B]as[/B] [COLOR=#0433ff][I]text[/I][/COLOR])[/FONT]
[COLOR=#812FDC][FONT=Verdana][COLOR=#000000]                [B]set[/B] [/COLOR]AppleScript[COLOR=#000000]'s [/COLOR]text item delimiters[COLOR=#000000] [B]to[/B] ""[/COLOR][/FONT][/COLOR]
[FONT=Verdana]                [B]set[/B] [COLOR=#4f8f00]nameFolder2[/COLOR] [B]to[/B] [COLOR=#0433ff][I]items[/I][/COLOR] 1 [B]thru[/B] -(([COLOR=#0433ff][B]count[/B][/COLOR] [B]of[/B] ([COLOR=#812fdc]name extension[/COLOR] [B]of[/B] [COLOR=#4f8f00]anItem[/COLOR] [B]as[/B] [COLOR=#0433ff][I]string[/I][/COLOR])) + 2) [B]of[/B] [COLOR=#4f8f00]nameFolder2[/COLOR] [B]as[/B] [COLOR=#0433ff][I]string[/I][/COLOR][/FONT]
[COLOR=#4F8F00][FONT=Verdana][COLOR=#000000]                [B]set[/B] [/COLOR]thePath[COLOR=#000000] [B]to[/B] [/COLOR][COLOR=#812fdc]POSIX path[/COLOR][COLOR=#000000] [B]of[/B] [/COLOR]this_folder[COLOR=#000000] & [/COLOR]nameFolder1[COLOR=#000000] & "/" & [/COLOR]nameFolder2[COLOR=#000000] & "/"[/COLOR][/FONT][/COLOR]
[COLOR=#5E6161][FONT=Verdana][COLOR=#000000]                [/COLOR]--Verzeichnis erstellen und Dateien verschieben[/FONT][/COLOR]
[FONT=Verdana]                [COLOR=#012fbe][B]do shell script[/B][/COLOR] "mkdir -p " & [COLOR=#812fdc]quoted form[/COLOR] [B]of[/B] [COLOR=#4f8f00]thePath[/COLOR] & "; mv " & [COLOR=#812fdc]quoted form[/COLOR] [B]of[/B] [COLOR=#812fdc]POSIX path[/COLOR] [B]of[/B] [COLOR=#4f8f00]anItem[/COLOR] & [COLOR=#812fdc]space[/COLOR] & [COLOR=#812fdc]quoted form[/COLOR] [B]of[/B] [COLOR=#4f8f00]thePath[/COLOR][/FONT]
[FONT=Verdana]            [B]end[/B] [B]if[/B][/FONT]
[FONT=Verdana]        [B]end[/B] [B]repeat[/B][/FONT]
[FONT=Verdana]    [B]end[/B] [B]tell[/B][/FONT]
[FONT=Verdana]    [B]set[/B] [COLOR=#4f8f00]isRunning[/COLOR] [B]to[/B] [COLOR=#5d3292]false[/COLOR][/FONT]
[COLOR=#5E6161][FONT=Verdana][COLOR=#000000]    [/COLOR]--nach 30s erneut starten[/FONT][/COLOR]
[FONT=Verdana]    [B]return[/B] 30[/FONT]
[FONT=Verdana][B]end[/B] [COLOR=#0433ff][B]idle[/B][/COLOR][/FONT]
[FONT=Verdana]
[/FONT]
[COLOR=#5E6161][FONT=Verdana]--Vor Beenden warten bis alle Dateien verschoben sind:[/FONT][/COLOR]
[COLOR=#0433FF][FONT=Verdana][COLOR=#000000][B]on[/B] [/COLOR][B]quit[/B][/FONT][/COLOR]
[FONT=Verdana]    [B]repeat[/B] [B]until[/B] [COLOR=#4f8f00]isRunning[/COLOR] [B]is[/B] [COLOR=#5d3292]false[/COLOR][/FONT]
[COLOR=#012FBE][FONT=Verdana][COLOR=#000000]        [/COLOR][B]delay[/B][COLOR=#000000] 1[/COLOR][/FONT][/COLOR]
[FONT=Verdana]    [B]end[/B] [B]repeat[/B][/FONT]
[B]end[/B][COLOR=#0433FF][FONT=Verdana][B]quit[/B][/FONT][/COLOR]
 
Zurück
Oben Unten