[GastForen Programmierung/Entwicklung AppleScript Ordnerstruktur aus Teil-Dateinamen erstellen

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

Ordnerstruktur aus Teil-Dateinamen erstellen

Klaus79
Beiträge gesamt: 341

7. Nov 2018, 16:47
Beitrag # 1 von 5
Bewertung:
(5756 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Forum,
ich bearbeite gerade mein erstes Applescript und bitte um Nachsicht wenn meine Fragen noch anfängerhaft sind.

Ich möchte Musiktitel in zu erstellende Ordner legen. Die Titel haben immer folgende Struktur:

Celtic Woman - May It Be.mp3
Everlast - This Kind of Lonely.mp3
Bryan Adams - Summer of '69.mp3
Everlast - Maybe.mp3
u.s.w.

Es sollten nun die Ordner Celtic Woman, Bryan Adams und Everlast angelegt und die Dateien in die jeweiligen Ordner verschoben werden. Folgendes Script habe ich bisher zusammengestellt:

tell application "Finder"
set theFolder to choose folder --Ordner mit den Dateien auswählen
set allFiles to every item of theFolder --alle Dateien im Ordner abfragen
repeat with theFile in allFiles
set theName to do shell script "name=\"" & name of theFile & "\"; echo ${name%.*}" --Den Namen der Datei ohne Endung abfragen
try
set newFolder to make new folder at theFolder with properties {name:theName} --neuen Ordner erstellen
end try
move theFile to newFolder --Datei verschieben
end repeat
display dialog "Fertig!"
end tell

Dabei habe ich noch zwei ungelöste Probleme. Zum einen wird der Ordnername bisher aus dem ganzen Dateinamen gebildet und nicht nur aus dem Interpreten, und zum zweiten müsste ein bereits angelegter Ordner erkannt und nicht doppelt angelegt werden.

Kann mir da jemand helfen?

Gruß
Klaus
X

Ordnerstruktur aus Teil-Dateinamen erstellen

Hans Haesler
  
Beiträge gesamt: 5826

7. Nov 2018, 17:55
Beitrag # 2 von 5
Beitrag ID: #567403
Bewertung:
(5738 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Klaus,

herzlich willkommen im AppleScript-Forum auf HDS! :-)

Nun, für ein erstes AppleScript ist das schon eine happige Aufgabe. Gratulation zu Deinem Versuch.

Ein paar Bemerkungen:
– 'choose folder' und 'display dialog' sind Befehle der "StandardAdditions" und nicht des "Finders".
Deshalb diese beiden Zeilen ausserhalb des tell-Finder-Blocks verschieben.
– Zum Auflisten der Dateien nicht 'item' benutzen, sondern 'file'. Sonst werden bestehende Ordner auch erfasst.
– Zum Ausziehen des zukünftigen Ordnernamens die 'AppleScript's text item delimiters' einsetzen.
Wenn diese als " - " bestimmt werden, kann das erste Text-Element herausgelöst und einer Variablen zugewiesen werden.
– Die Prüfung 'if not (exists folder folName of folder theFolder)' stellt sicher, dass bei bestehendem Ordner nicht versucht wird, einen zweiten anzulegen.
– Wenn der neue Ordner erstellt ist, wird die Datei hineinverschoben.
– Diese Aktion ist in einem 'try'-Wickel, um zu vermeiden, dass es eine Fehlermeldung absetzt, wenn eine gleichnamige Datei schon vorhanden ist.
– Wenn der Ordner schon existiert, wird die Datei in diesen verschoben.

Code
set theFolder to choose folder # Ordner mit den Dateien auswählen 

set AppleScript's text item delimiters to " - " # den Trenner bestimmen

tell application "Finder"
set allFiles to every file of theFolder # alle Dateien im Ordner abfragen
repeat with theFile in allFiles
set theName to name of theFile # der Name der Datei
set folName to text item 1 of theName # das erste Text-Element des Namens
if not (exists folder folName of folder theFolder) then
set newFolder to make new folder at theFolder with properties {name:folName} # neuen Ordner erstellen
try
move theFile to newFolder # Datei verschieben
end try
else
try
move theFile to folder folName of folder theFolder # Datei verschieben
end try
end if
try
end try
end repeat
end tell

set AppleScript's text item delimiters to {""} # den Trenner zurücksetzen

display dialog "Fertig!" buttons "OK" default button 1 with icon 1 giving up after 1

Hier funktioniert es wie erwartet. Hoffentlich bei Dir auch.

Gruss, Hans


als Antwort auf: [#567402]

Ordnerstruktur aus Teil-Dateinamen erstellen

Klaus79
Beiträge gesamt: 341

7. Nov 2018, 18:49
Beitrag # 3 von 5
Beitrag ID: #567407
Bewertung:
(5728 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wow Hans, funktioniert einwandfrei! Herzlichen Dank!
Das erspart mir eine Menge an Arbeit.

Bei meiner Recherche war ich auch auf delimiters gestoßen, aber die Syntax war mir natürlich nicht geläufig. Ich komme mehr von Excel und VBA (als Hobby).

Gibt es auch noch die Möglichkeit das Ganze als Droplet zu speichern? Bisher habe eine App erstellt, aber irgendwo etwas von "on open" gelesen, aber nicht umsetzen können. Wäre aber nicht so wichtig, ich bin mit diesem Ergebnis schon vollauf zufrieden!

Herzlichen Dank noch einmal, Hans.

Gruß
Klaus


als Antwort auf: [#567403]

Ordnerstruktur aus Teil-Dateinamen erstellen

Hans Haesler
  
Beiträge gesamt: 5826

7. Nov 2018, 19:18
Beitrag # 4 von 5
Beitrag ID: #567408
Bewertung:
(5718 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Klaus,

bitte sehr. Super, dass es auf Anhieb klappte.

Ein Droplet? Das wollte ich Dir vorschlagen. Bitte, hier:

Code
(*MusikOrdner.app 
Zum Einordnen von Musik-Dateien
*)

on open droppedFolder
set theFolder to item 1 of droppedFolder as Unicode text # der gedroppte Ordner
set AppleScript's text item delimiters to " – " # den Trenner bestimmen

tell application "Finder"
set allFiles to every file of folder theFolder # alle Dateien im Ordner abfragen
repeat with theFile in allFiles
set theName to name of theFile # der Name der Datei
set folName to text item 1 of theName # das erste Text-Element des Namens
if not (exists folder folName of folder theFolder) then
set newFolder to make new folder at theFolder with properties {name:folName} # neuen Ordner erstellen
try
move theFile to newFolder # Datei verschieben
end try
else
try
move theFile to folder folName of folder theFolder # Datei verschieben
end try
end if
try
end try
end repeat
end tell

set AppleScript's text item delimiters to {""} # den Trenner zurücksetzen

display dialog "Fertig!" buttons "OK" default button 1 with icon 1 giving up after 1
end open

Dieses Script – im Format "Programm" gespeichert –, ist gezippt unten angehängt.

Zur Ausführung: Den Ordner, welcher die Dateien enthält, auf das Icon des Droplets ziehen.
Der Ordner kann schon benannte Ordner enthalten. Dateien werden im entsprechenden Ordner versorgt. Oder in einem neuen, welcher angelegt wird.

Gruss, Hans


als Antwort auf: [#567407]
Anhang:
MusikOrdner.zip (56.4 KB)

Ordnerstruktur aus Teil-Dateinamen erstellen

Klaus79
Beiträge gesamt: 341

7. Nov 2018, 20:07
Beitrag # 5 von 5
Beitrag ID: #567410
Bewertung:
(5705 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

was soll ich dazu noch sagen. Einfach PERFEKT!
Das können bestimmt auch noch andere Leute gut gebrauchen.

Vielen Dank auch für Deine Anmerkungen zum Scripten.
Ich werde zwar wohl nicht mehr der große Applescripter werden,
aber wer weis ...

Eine schöne Restwoche für Dich
Danke

Klaus


als Antwort auf: [#567408]
X