AppleScript: Mehrere Dateien in einen neuen gleichnamigen Ordner

K

Kane06

Registriert
Thread Starter
Dabei seit
15.01.2014
Beiträge
3
Reaktionspunkte
0
Hallo Zusammen,
Ich bin momentan am verzweifeln... Ich suche eine Lösung für mein folgendes Problem.
Und zwar habe ich mehrere Dateien in einem Ordner (Dateiname 01.doc, Dateiname 02.doc, Dateienstrukturdatei 01.doc
Dateienstrukturdatei 02.doc, usw...)
Mit einem Script möchte ich zunächst aus einem der Dateinamen (Dateiname 01 oder Dateiname 02) einen Ordner erstellen mit dem Namen der Datei (Dateiname).
Anschließend würde ich dann gerne die Dateien, die durch einen Vergleich der ersten 5 Zeichen gleich mit dem Ordnernamen beginnen in diesen einen Ordner kopieren.
Somit hätte ich eine Art Gruppierung der Dateien als Ordner:

Ordner Dateiname
-> Inhalt Dateiname 01.doc und Dateiname 02.doc

Ordner Dateienstrukturdatei
-> Inhalt Dateienstruktur 01.doc und Dateienstruktur 02.doc

Ich habe mir folgendes zusammengebastelt, jedoch ohne erfolg.
Er erstellt die Ordner, kopiert aber die Dateien in den nach der Datei benannten Ordner.

Code:
[COLOR=#000000][FONT=Verdana][B]set[/B] [/FONT][/COLOR][COLOR=#4F8F00][FONT=Verdana]myFolder[/FONT][/COLOR][COLOR=#000000][FONT=Verdana] [B]to[/B] [/FONT][/COLOR][COLOR=#012FBE][FONT=Verdana][B]choose folder[/B][/FONT][/COLOR][COLOR=#5E6161][FONT=Verdana]-- Ordner auswählen [/FONT][/COLOR][FONT=Verdana][B]tell[/B] [COLOR=#0433ff][I]application[/I][/COLOR] "Finder"[/FONT]
[FONT=Verdana]    [B]set[/B] [COLOR=#4f8f00]allItems[/COLOR] [B]to[/B] [B]every[/B] [COLOR=#0433ff][I]item[/I][/COLOR] [B]of[/B] [COLOR=#4f8f00]myFolder[/COLOR][/FONT]
[FONT=Verdana]    [B]repeat[/B] [B]with[/B] [COLOR=#4f8f00]f[/COLOR] [B]in[/B] [COLOR=#4f8f00]allItems[/COLOR][/FONT]
[COLOR=#5E6161][FONT=Verdana][COLOR=#000000]        [B]if[/B] [/COLOR][COLOR=#812fdc]kind[/COLOR][COLOR=#000000] [B]of[/B] [/COLOR][COLOR=#4f8f00]f[/COLOR][COLOR=#000000] [B]is[/B] [B]not[/B] "Folder" [B]then[/B] [/COLOR]-- das Script funktioniert nur mit Files, Ordner werden übersprungen... [/FONT][/COLOR]
[COLOR=#5E6161][FONT=Verdana][COLOR=#000000]            [B]set[/B] [/COLOR][COLOR=#4f8f00]fn[/COLOR][COLOR=#000000] [B]to[/B] [/COLOR][COLOR=#812fdc]name[/COLOR][COLOR=#000000] [B]of[/B] [/COLOR][COLOR=#4f8f00]f[/COLOR][/FONT][/COLOR]
[FONT=Verdana]            [B]set[/B] [COLOR=#4f8f00]fEx[/COLOR] [B]to[/B] [COLOR=#812fdc]name extension[/COLOR] [B]of[/B] [COLOR=#4f8f00]f[/COLOR][/FONT]
[FONT=Verdana]            [B]set[/B] [COLOR=#4f8f00]baseName[/COLOR] [B]to[/B] ([COLOR=#0433ff][I]characters[/I][/COLOR] 1 [B]thru[/B] -(([COLOR=#812fdc]length[/COLOR] [B]of[/B] [COLOR=#4f8f00]fEx[/COLOR]) + 2) [B]of[/B] [COLOR=#4f8f00]fn[/COLOR]) [B]as[/B] [COLOR=#0433ff][I]text[/I][/COLOR] [COLOR=#5e6161]-- für den Ordnernamen ohne Extension [/COLOR][/FONT]
[COLOR=#5E6161][FONT=Verdana][COLOR=#000000]            [B]set[/B] [/COLOR][COLOR=#4f8f00]newFolder[/COLOR][COLOR=#000000] [B]to[/B] ([/COLOR][COLOR=#0433ff][B]make[/B][/COLOR][COLOR=#0433ff]new[/COLOR][COLOR=#0433ff][I]folder[/I][/COLOR][COLOR=#0433ff]at[/COLOR][COLOR=#4f8f00]myFolder[/COLOR][COLOR=#0433ff]with properties[/COLOR][COLOR=#000000] {[/COLOR][COLOR=#812fdc]name[/COLOR][COLOR=#000000]:[/COLOR][COLOR=#4f8f00]baseName[/COLOR][COLOR=#000000]}) [/COLOR]-- erstellen des neuen Ordners [/FONT][/COLOR]

[COLOR=#4F8F00][FONT=Verdana][COLOR=#0433ff][B]move [/B][/COLOR]f [COLOR=#0433ff]to [/COLOR]newFolder[/FONT][/COLOR]

[FONT=Verdana]        [B]end[/B] [B]if[/B][/FONT]
[FONT=Verdana]    [B]end[/B] [B]repeat[/B][/FONT]
[B]end[/B][B]tell[/B]

Ich hoffe jemand könnte mir helfen?
Danke im Voraus
 
Mach mal Beispiele mit realen Dateinamen
Die ersten fünf Zeichen von "Dateiname 01.doc" und "Dateienstruktur 01.doc" sind nämlich identisch.

Auch sehe ich in Deinem Skript keinen Test auf die ersten fünf Zeichen.
Die bekommst Du mit "characters 1 thru 5 of fn" aus dem Dateinamen heraus.

Dein Skript prüft ob f kein Ordner ist (if kind of f is not "Folder") ein "Folder" ist.
Wenn ja: "move f to newFolder".

"kind of" gibt übrigens die Art in der eingestellten Sprache wieder.
Das heißt, wenn Dein System auf deutsch eingestellt ist, kommt es zu unerwarteten Ergebnissen.
In einem deutschen System müsstest Du statt "Folder" "Ordner" schreiben.


Gruß
maceis
 
  • Gefällt mir
Reaktionen: chaos_inc
Hallo Maceis,

Danke für eine schnelle Antwort.
In dem Ordner habe ich TV-Mitschnitte die wie folgt aussehen:
Bad Boys I.mov
Bad Boys II.mov
Big Bang Theory S01 Folge 3.mov
Big Bang Theory S01 Folge 4.mov
usw.

Dein Vorschlag wäre also zunächst den Dateinamen separat zu selektieren mit:
set FileName to (characters 1 thru 5 of fn)

Und anschließend:
move f to newFolder whose name begins as FileName?
Sorry, bin noch total unerfahren was Apple Script angeht.

Die Ordnerabfrage änder ich von Folder auf Ordner, da ich nur ein deutsches System im Einsatz habe.

Danke und Gruß
Sergej
 
Mein Vorschlag ist, Du probierst das jetzt mal aus, beobachtest, was passiert, versuchst ggf. Dein Skript anzupassen.
Wenn Du irgendwo hängen bleibst, meldest Du Dich hier wieder mit konkreten Fragen.

Wenn Du fertig bist, kannst Du Deine Lösung hier posten.
Vielleicht kann man dann noch was optimieren oder andere können von Deiner Arbeit profitieren.
Das ist immer ein Geben und Nehmen.
 
Danke dir für den Vorschlag.
Ich habe nur das Problem, dass ich mich noch nicht so gut auskenne... :-(
Ich habe nun so gut wie möglich die Funktionen erweitert.
Hinzu kam die Suche nach einem bereits vorhandenen Ordner, die leider nicht richtig funktioniert. Es bricht ab und die Dateien werden
dann nicht verschoben. Hierbei erhalte ich auch einen Fehler ("Finder" hat einen Fehler erhalten, dass ein Objekt mit dem gleichen Namen bereits vorhanden ist"). Ich wüsste nicht wie ich das umgehen könnte?

Desweiteren fehlt hier noch der Stop, dass er nur einen Ordner erstellen soll; Momentan erstellt er alle Ordner aller Dateien.
Wenn ich z.B. Audiodatei.mp3 und Audiodatei 02.mp3 habe, so erstellt er beide Ordner und nicht nur einen.
Ich weiss aber leider nicht wie ich das realisieren könnte.

Last but not least bräuchte ich auch Hilfe bei dem Vergleich des Ordners in der If-Abfrage (If not exists folder)... hier
müsste der Finder nach einem Ordner suchen, der mit dem gleichen Namen beginnt.. wie kann man das realisieren?

Lauter ??? Ich weiss :)

P.S. anbei der Code:

Code:
[COLOR=#000000][FONT=Verdana][B]set[/B] [/FONT][/COLOR][COLOR=#4F8F00][FONT=Verdana]myFolder[/FONT][/COLOR][COLOR=#000000][FONT=Verdana] [B]to[/B] [/FONT][/COLOR][COLOR=#012FBE][FONT=Verdana][B]choose folder[/B][/FONT][/COLOR][COLOR=#000000][FONT=Verdana] [/FONT][/COLOR][COLOR=#5E6161][FONT=Verdana]-- Ordner auswählen[/FONT][/COLOR][FONT=Verdana][B]tell[/B] [COLOR=#0433ff][I]application[/I][/COLOR] "Finder"[/FONT]
[FONT=Verdana]	[B]set[/B] [COLOR=#4f8f00]allItems[/COLOR] [B]to[/B] [B]every[/B] [COLOR=#0433ff][I]item[/I][/COLOR] [B]of[/B] [COLOR=#4f8f00]myFolder[/COLOR][/FONT]
[FONT=Verdana]	[B]repeat[/B] [B]with[/B] [COLOR=#4f8f00]f[/COLOR] [B]in[/B] [COLOR=#4f8f00]allItems[/COLOR][/FONT]
[COLOR=#5E6161][FONT=Verdana][COLOR=#000000]		[B]if[/B] [/COLOR][COLOR=#812fdc]kind[/COLOR][COLOR=#000000] [B]of[/B] [/COLOR][COLOR=#4f8f00]f[/COLOR][COLOR=#000000] [B]is[/B] [B]not[/B] "Ordner" [B]then[/B] [/COLOR]-- das Script funktioniert nur mit Files, Ordner werden übersprungen... [/FONT][/COLOR]
[FONT=Verdana]			[B]set[/B] [COLOR=#4f8f00]fn[/COLOR] [B]to[/B] [COLOR=#812fdc]name[/COLOR] [B]of[/B] [COLOR=#4f8f00]f[/COLOR][/FONT]
[FONT=Verdana]			[B]set[/B] [COLOR=#4f8f00]fEx[/COLOR] [B]to[/B] [COLOR=#812fdc]name extension[/COLOR] [B]of[/B] [COLOR=#4f8f00]f[/COLOR][/FONT]
[FONT=Verdana]			[B]set[/B] [COLOR=#4f8f00]baseName[/COLOR] [B]to[/B] ([COLOR=#0433ff][I]characters[/I][/COLOR] 1 [B]thru[/B] -(([COLOR=#812fdc]length[/COLOR] [B]of[/B] [COLOR=#4f8f00]fEx[/COLOR]) + 2) [B]of[/B] [COLOR=#4f8f00]fn[/COLOR]) [B]as[/B] [COLOR=#0433ff][I]text[/I][/COLOR] [COLOR=#5e6161]-- für den Ordnernamen ohne Extension [/COLOR][/FONT]
[FONT=Verdana]			[B]if[/B] [B]not[/B] ([COLOR=#0433ff][B]exists[/B][/COLOR] ([COLOR=#0433ff][I]folder[/I][/COLOR])) [B]then[/B][/FONT]
[COLOR=#5E6161][FONT=Verdana][COLOR=#000000]				[B]set[/B] [/COLOR][COLOR=#4f8f00]newFolder[/COLOR][COLOR=#000000] [B]to[/B] [/COLOR][COLOR=#0433ff][B]make[/B][/COLOR][COLOR=#000000] [/COLOR][COLOR=#0433ff]new[/COLOR][COLOR=#000000] [/COLOR][COLOR=#0433ff][I]folder[/I][/COLOR][COLOR=#000000] [/COLOR][COLOR=#0433ff]at[/COLOR][COLOR=#000000] [/COLOR][COLOR=#4f8f00]myFolder[/COLOR][COLOR=#000000] [/COLOR][COLOR=#0433ff]with properties[/COLOR][COLOR=#000000] {[/COLOR][COLOR=#812fdc]name[/COLOR][COLOR=#000000]:[/COLOR][COLOR=#4f8f00]baseName[/COLOR][COLOR=#000000]} [/COLOR]-- erstellen des neuen Ordners [/FONT][/COLOR]
[COLOR=#4F8F00][FONT=Verdana][COLOR=#000000]				[B]set[/B] [/COLOR]FolderName[COLOR=#000000] [B]to[/B] [B]my[/B] [/COLOR]getPrefix[COLOR=#000000]([/COLOR][COLOR=#812fdc]name[/COLOR][COLOR=#000000] [B]of[/B] [/COLOR]newFolder[COLOR=#000000])[/COLOR][/FONT][/COLOR]
[COLOR=#4F8F00][FONT=Verdana][COLOR=#000000]				[B]set[/B] [/COLOR]OrdnerName[COLOR=#000000] [B]to[/B] [/COLOR][COLOR=#812fdc]name[/COLOR][COLOR=#000000] [B]of[/B] [/COLOR]newFolder[/FONT][/COLOR]
[FONT=Verdana]				[/FONT]
[FONT=Verdana]				[B]set[/B] [COLOR=#4f8f00]prefix[/COLOR] [B]to[/B] [B]my[/B] [COLOR=#4f8f00]getPrefix[/COLOR]([COLOR=#812fdc]name[/COLOR] [B]of[/B] [COLOR=#4f8f00]f[/COLOR])[/FONT]
[FONT=Verdana]				[B]try[/B][/FONT]
[FONT=Verdana]					[B]set[/B] [COLOR=#4f8f00]destinationFolder[/COLOR] [B]to[/B] (1[B]st[/B] [COLOR=#0433ff][I]folder[/I][/COLOR] [B]of[/B] [COLOR=#4f8f00]myFolder[/COLOR] [B]whose[/B] [COLOR=#812fdc]name[/COLOR] [B]begins with[/B] [COLOR=#4f8f00]prefix[/COLOR])[/FONT]
[COLOR=#4F8F00][FONT=Verdana][COLOR=#000000]					[/COLOR][COLOR=#0433ff][B]move[/B][/COLOR][COLOR=#000000] [/COLOR]f[COLOR=#000000] [/COLOR][COLOR=#0433ff]to[/COLOR][COLOR=#000000] [/COLOR]destinationFolder[/FONT][/COLOR]
[FONT=Verdana]				[B]end[/B] [B]try[/B][/FONT]
[FONT=Verdana]			[B]end[/B] [B]if[/B][/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]
[COLOR=#4F8F00][FONT=Verdana][COLOR=#000000][B]on[/B] [/COLOR]getPrefix[COLOR=#000000]([/COLOR]aName[COLOR=#000000])[/COLOR][/FONT][/COLOR]
[FONT=Verdana]	[B]try[/B][/FONT]
[FONT=Verdana]		[B]set[/B] [COLOR=#4f8f00]prefix[/COLOR] [B]to[/B] [COLOR=#0433ff][I]text[/I][/COLOR] 1 [B]thru[/B] 9 [B]of[/B] [COLOR=#4f8f00]aName[/COLOR][/FONT]
[FONT=Verdana]		[B]return[/B] [COLOR=#4f8f00]prefix[/COLOR][/FONT]
[FONT=Verdana]	[B]on[/B] [B]error[/B][/FONT]
[FONT=Verdana]		[B]return[/B] [COLOR=#4f8f00]aName[/COLOR][/FONT]
[FONT=Verdana]	[B]end[/B] [B]try[/B][/FONT]
[COLOR=#000000][FONT=Verdana][B]end[/B] [/FONT][/COLOR][COLOR=#4F8F00][FONT=Verdana]getPrefix[/FONT][/COLOR]

Grüße
 
Ich habe mal versucht etwas Ordnung in deinen Code zu bekommen:

Code:
[COLOR=#000000][FONT=Verdana][B]set[/B] [/FONT][/COLOR][COLOR=#4F8F00][FONT=Verdana]myFolder[/FONT][/COLOR][COLOR=#000000][FONT=Verdana] [B]to[/B] [/FONT][/COLOR][COLOR=#012FBE][FONT=Verdana][B]choose folder[/B][/FONT][/COLOR][COLOR=#5E6161][FONT=Verdana]-- Ordner auswählen
[/FONT][/COLOR][FONT=Verdana][B]tell[/B] [COLOR=#0433ff][I]application[/I][/COLOR] "Finder"[/FONT]
[COLOR=#5E6161][FONT=Verdana][COLOR=#000000]    [B]set[/B] [/COLOR][COLOR=#4f8f00]allItems[/COLOR][COLOR=#000000] [B]to[/B] [B]every[/B] [/COLOR][COLOR=#0433ff][I]file[/I][/COLOR][COLOR=#000000] [B]of[/B] [/COLOR][COLOR=#4f8f00]myFolder[/COLOR]-- das Script funktioniert nur mit Files, Ordner werden übersprungen...[/FONT][/COLOR]
[FONT=Verdana]    [B]repeat[/B] [B]with[/B] [COLOR=#4f8f00]f[/COLOR] [B]in[/B] [COLOR=#4f8f00]allItems[/COLOR][/FONT]
[FONT=Verdana]        [B]set[/B] [COLOR=#4f8f00]fn[/COLOR] [B]to[/B] [COLOR=#812fdc]name[/COLOR] [B]of[/B] [COLOR=#4f8f00]f[/COLOR][/FONT]
[FONT=Verdana]        [B]set[/B] [COLOR=#4f8f00]fEx[/COLOR] [B]to[/B] [COLOR=#812fdc]name extension[/COLOR] [B]of[/B] [COLOR=#4f8f00]f[/COLOR][/FONT]
[FONT=Verdana]        [B]set[/B] [COLOR=#4f8f00]baseName[/COLOR] [B]to[/B] ([COLOR=#0433ff][I]characters[/I][/COLOR] 1 [B]thru[/B] -(([COLOR=#812fdc]length[/COLOR] [B]of[/B] [COLOR=#4f8f00]fEx[/COLOR]) + 2) [B]of[/B] [COLOR=#4f8f00]fn[/COLOR]) [B]as[/B] [COLOR=#0433ff][I]text[/I][/COLOR] [COLOR=#5e6161]-- für den Ordnernamen ohne Extension[/COLOR][/FONT]
[FONT=Verdana]        [B]set[/B] [COLOR=#4f8f00]prefix[/COLOR] [B]to[/B] [B]my[/B] [COLOR=#4f8f00]getPrefix[/COLOR]([COLOR=#812fdc]name[/COLOR] [B]of[/B] [COLOR=#4f8f00]f[/COLOR])[/FONT]
[FONT=Verdana]        [/FONT]
[COLOR=#5E6161][FONT=Verdana][COLOR=#000000]        [/COLOR]-- wenn es noch keinen Ordner gibt, der mit dem Prefix beginnt, dann wird ein neuer Ordner erstellt.[/FONT][/COLOR]
[FONT=Verdana]        [B]set[/B] [COLOR=#4f8f00]existingFolders[/COLOR] [B]to[/B] ([COLOR=#0433ff][I]folders[/I][/COLOR] [B]of[/B] [COLOR=#4f8f00]myFolder[/COLOR] [B]whose[/B] [COLOR=#812fdc]name[/COLOR] [B]begins with[/B] [COLOR=#4f8f00]prefix[/COLOR])[/FONT]
[FONT=Verdana]        [B]if[/B] [COLOR=#4f8f00]existingFolders[/COLOR] [B]is[/B] {} [B]then[/B][/FONT]
[COLOR=#5E6161][FONT=Verdana][COLOR=#000000]            [B]set[/B] [/COLOR][COLOR=#4f8f00]newFolder[/COLOR][COLOR=#000000] [B]to[/B] [/COLOR][COLOR=#0433ff][B]make [/B][/COLOR][COLOR=#0433ff]new [/COLOR][COLOR=#0433ff][I]folder [/I][/COLOR][COLOR=#0433ff]at [/COLOR][COLOR=#4f8f00]myFolder [/COLOR][COLOR=#0433ff]with properties[/COLOR][COLOR=#000000] {[/COLOR][COLOR=#812fdc]name[/COLOR][COLOR=#000000]:[/COLOR][COLOR=#4f8f00]baseName[/COLOR][COLOR=#000000]} [/COLOR]-- erstellen des neuen Ordners [/FONT][/COLOR]
[FONT=Verdana]        [B]else[/B][/FONT]
[COLOR=#4F8F00][FONT=Verdana][COLOR=#000000]            [B]set[/B] [/COLOR]newFolder[COLOR=#000000] [B]to[/B] [/COLOR][COLOR=#0433ff][I]item[/I][/COLOR][COLOR=#000000] 1 [B]of[/B] [/COLOR]existingFolders[/FONT][/COLOR]
[FONT=Verdana]        [B]end[/B] [B]if[/B][/FONT]
[FONT=Verdana]        [/FONT]
[COLOR=#5E6161][FONT=Verdana][COLOR=#000000]        [/COLOR][COLOR=#0433ff][B]move [/B][/COLOR][COLOR=#4f8f00]f [/COLOR][COLOR=#0433ff]to [/COLOR][COLOR=#4f8f00]newFolder [/COLOR]--Datei verschieben[/FONT][/COLOR]
[FONT=Verdana]    [B]end[/B] [B]repeat[/B][/FONT]
[FONT=Verdana][B]end[/B] [B]tell[/B][/FONT]
[FONT=Verdana]
[/FONT]
[COLOR=#4F8F00][FONT=Verdana][COLOR=#000000][B]on[/B] [/COLOR]getPrefix[COLOR=#000000]([/COLOR]aName[COLOR=#000000])[/COLOR][/FONT][/COLOR]
[FONT=Verdana]    [B]try[/B][/FONT]
[FONT=Verdana]        [B]set[/B] [COLOR=#4f8f00]prefix[/COLOR] [B]to[/B] [COLOR=#0433ff][I]text[/I][/COLOR] 1 [B]thru[/B] 9 [B]of[/B] [COLOR=#4f8f00]aName[/COLOR][/FONT]
[FONT=Verdana]        [B]return[/B] [COLOR=#4f8f00]prefix[/COLOR][/FONT]
[FONT=Verdana]    [B]on[/B] [B]error[/B][/FONT]
[FONT=Verdana]        [B]return[/B] [COLOR=#4f8f00]aName[/COLOR][/FONT]
[FONT=Verdana]    [B]end[/B] [B]try[/B][/FONT]
[COLOR=#4F8F00][FONT=Verdana][COLOR=#000000][B]end[/B] [/COLOR]getPrefix[/FONT][/COLOR]
[FONT=Verdana]
[/FONT]
 
Zurück
Oben Unten