[GastForen Programmierung/Entwicklung AppleScript Bilddateien nach den ersten 8 Buchstaben in Ordner einsortieren

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

Bilddateien nach den ersten 8 Buchstaben in Ordner einsortieren

softikuss
Beiträge gesamt: 3

22. Sep 2016, 11:57
Beitrag # 1 von 6
Bewertung:
(2971 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich habe hier viele Dateien die haben alle das gleiche Muster:

YYYYMMDD-hhmmss_xyz.jpg

Die Dateien will ich aus dem aktuellen Verzeichnis so einsortieren, dass sie in Unterverzeichnissen verschoben werden.

Die Unterverzeichnisse sollen nach dem Muster YYMMDD benannt werden. 20160622-153532_879.jpg wird also in ein Verzeichnis 160622 verschoben - wenn es das Verzeichnis nicht gibt wird es angelegt.

Der aktuelle Ordner mit Dateien wird solange durchsucht und diese einsortiert bis es keine Datei mehr im aktuellen ordner gibt, nur noch Unterverzeichnisse, welche dann die sortierten Dateien enthalten.

Kann mir jemand hier damit helfen? Ich habe noch nie AppleScript probiert, würde es mir eurer Unterstützung aber gerne mal probieren.
X

Bilddateien nach den ersten 8 Buchstaben in Ordner einsortieren

Hans Haesler
  
Beiträge gesamt: 5826

22. Sep 2016, 13:25
Beitrag # 2 von 6
Beitrag ID: #552755
Bewertung:
(2923 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo softikuss,

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

Ich bin auf der Rückfahrt aus dem Urlaub. Vor morgen Freitag werde ich nichts Brauchbares liefern können. Doch vielleicht kommt mir ein versierter Mitleser zuvor ...

Welche Version von Mac OS X ist bei Dir im Einsatz?

Gruss, Hans


als Antwort auf: [#552752]

Bilddateien nach den ersten 8 Buchstaben in Ordner einsortieren

softikuss
Beiträge gesamt: 3

22. Sep 2016, 15:19
Beitrag # 3 von 6
Beitrag ID: #552760
Bewertung:
(2887 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wow, Wahnsinn wie schnell und bereitwillig hier geantwortet/geholfen wird! Vorab schonmal herzlichen Dank dafür!

Ich habe auf allen meinen Macs OS X V10.9.5 auch auf dem wo ich das Sortierproblem habe.


als Antwort auf: [#552755]

Bilddateien nach den ersten 8 Buchstaben in Ordner einsortieren

Hans Haesler
  
Beiträge gesamt: 5826

24. Sep 2016, 09:58
Beitrag # 4 von 6
Beitrag ID: #552796
Bewertung:
(2726 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo softikuss,

es hat etwas länger gedauert, aber hier ist nun die erste Version des Scripts.

Der Code ist als Droplet geschrieben. Beim Speichern muss das Dateiformat "Programm" gewählt werden.
Oder ganz einfach das hier angehängte DateienVerschieben_01d.zip herunterladen und entpacken.

Zum Gebrauch: Den Hauptordner, welcher die Dateien enthält, auf das Icon des Droplets ziehen.
Es können auch einzelne (oder mehrere) Dateien – welche sich im Hauptordner befinden – gedroppt werden.

Für den ersten Versuch bitte nur eine Handvoll Dateien in einen Testordner kopieren.

Wenn nachträglich Dateien in den Hauptordner geschoben wurden, dann ganz einfach wieder den Hauptordner droppen.
Die darin enthaltenen Ordner werden nicht nochmals behandelt, dienen aber weiterhin als Zielordner.

Code
(*   
DateienVerschieben_01d.app
Dieses Script verschiebt Dateien in entsprechende Ordner des Hauptordners
aufgrund der acht Zeichen zu Beginn der Datei-Namen
© 24.09.16 / Hans Haesler, Châtelard 52, CH-1018 Lausanne
*)

global targetFolder

-- einen Dialog zeigen, falls der Anwender einen Doppelklick auf das Droplet macht
on run
display dialog "Den Ordner auf dem Icon
dieses Droplets deponieren." buttons "OK" default button 1 with icon 0
end run

-- der 'open handler', welcher auf das Fallenlassen von Objekten reagiert
on open allObjects
-- den Hauptordnerpfad speichern
if (item 1 of allObjects as string) ends with ":" then
set targetFolder to (item 1 of allObjects)
else
tell application "Finder"
set targetFolder to (container of item 1 of allObjects) as Unicode text
end tell
end if
-- Wiederholschleife, welche die gedroppten Objekte zum Handler 'processObject' schickt
repeat with aObject in allObjects
processObject(aObject)
end repeat
-- den Anwender informieren
activate me
display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 1
end open

-- im folgenden Handler wird festgestellt, ob das Objekt ein Ordner oder eine Datei ist;
-- der Inhalt des Hauptordners wird aufgelistet; Dateien werden zum Handler 'processFile' gesandt.
on processObject(aObject)
-- wenn der Pfad mit einem Doppelpunkt endet, ist das Objekt ein Ordner
if (aObject as string) ends with ":" then
-- die Liste des Inhalts wird erstellt
tell application "System Events"
set contentsList to name of every file of folder (aObject as Unicode text)
end tell
-- die Wiederholschleife schickt die Dateien zum Handler 'processFile'
repeat with curItem in contentsList
set objPath to ((aObject as Unicode text) & curItem)
-- unsichtbare Dateien ausschliessen
if not (curItem starts with ".") then
-- die Dateipfad und Name senden
if (count of curItem) is greater than 11 then
processFile(objPath as alias, curItem)
end if
end if
end repeat
-- wenn das Objekt eine Datei ist ...
else
tell application "Finder"
-- den Namen der Datei ...
set fullName to name of file aObject
end tell
-- ... wird der Pfad und der Dateiname dem Handler 'processFile' übergeben
processFile(aObject, fullName)
end if
end processObject

-- die aktuelle Datei behandeln
on processFile(aObject, fullName)
-- den Ordnernamen ausziehen
set folName to text 3 thru 8 of fullName
-- und auch den vollen Pfad zum Unterordner
set curFolder to ((targetFolder as string) & folName) as string
tell application "Finder"
-- wenn der Ordner vorhanden ist ...
if (exists curFolder) then
-- ... versuchen, die aktuelle Datei hineinzuverschieben
try
move file aObject to curFolder with replacing
end try
else
-- sonst den Ordner zuerst erzeugen ...
set curFolder to make new folder at folder targetFolder with properties {name:folName}
-- ... und dann die Datei verschieben
try
move file aObject to curFolder with replacing
end try
end if
end tell
end processFile

Nun hoffe ich, dass es wie erwartet funktionieren wird.

Gruss, Hans


als Antwort auf: [#552760]
Anhang:
DateienVerschieben_01d.zip (60.7 KB)

Bilddateien nach den ersten 8 Buchstaben in Ordner einsortieren

softikuss
Beiträge gesamt: 3

27. Sep 2016, 17:56
Beitrag # 5 von 6
Beitrag ID: #552864
Bewertung:
(2572 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wahnsinn!

Ich bin platt. Das Script funktioniert auf Anhieb! Habe es erst mit wenigen Dateien getestet und für gut befunden, dann auf einen großen Ordner losgelassen! Toll, geht!

Vielen vielen Dank hans das war echt super. Ich muss mal mehr mit AppleScript beschäftigen, das scheint mir ein mächtiges Werkzeug zu sein.

Vielen Dank nochmal,
Markus


als Antwort auf: [#552796]

Bilddateien nach den ersten 8 Buchstaben in Ordner einsortieren

Hans Haesler
  
Beiträge gesamt: 5826

27. Sep 2016, 20:21
Beitrag # 6 von 6
Beitrag ID: #552866
Bewertung:
(2543 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Markus,

bitte sehr.

Als Grundlage nahm ich eine der vielen Varianten von Scripts, welche Dateien verschieben.
Musste einiges ändern, damit es nicht rekursiv die schon vorhandenen Ziel-Ordner erneut behandelt.

Und jetzt kommt mein diskreter Hinweis auf die Möglichkeit zu einer Dankbarkeitsbezeugung:
http://hilfdirselbst.org/...amp;read_category=31

Besten Dank im voraus. ;-)

Gruss, Hans

[ Wohlgemerkt: Von einer Spende erhalte ich keinen Cent. Spende aber selber jedes Jahr CHF 100.–
Doch: Das ist es mir wert. Sehr oft bringt eine kurze Suche im Forum einen Lösungsansatz für ein Problem. ]


als Antwort auf: [#552864]
X