Hallo Rüdiger,
der nachfolgende Code als Programm gespeichert, ergibt ein Droplet.
Auf dessen Icon kann man einen Ordner ziehen. Oder einzelne oder mehrere Dateien.
Das Script setzt den Namen des Ziel-Ordners zusammen und verschiebt die aktuelle Datei in diesen Ordner.
Getestet mit Dateinamen von "5000000A.MPF" bis "5999999H.MPF".
Bei der ersten Ausführung muss der Hauptordner, welcher all die Unterordner enthält, gewählt werden.
Wenn im gewählten Hauptordner ein Zielordner nicht vorhanden ist, wird er erzeugt.
Code (* DateienVerschieben_03d.app Dieses Script verschiebt Dateien in entsprechende Ordner des Hauptordners aufgrund der sieben Ziffern zu Beginn der Datei-Namen © 27.02.17 / Hans Haesler, Châtelard 52, CH-1018 Lausanne *) property mainFolder : "" global probCtr -- 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 prüfen tell application "Finder" -- auswählen lassen falls nicht vorhanden if not (exists mainFolder) then set mainFolder to my defineFolder() end if end tell set probCtr to 0 -- Wiederholschleife, welche die gedroppten Objekte zum Handler 'processObject' schickt repeat with aObject in allObjects processObject(aObject) end repeat -- den Anwender informieren activate me if probCtr is 0 then display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 1 else if probCtr is 1 then display dialog "Eine Datei nicht verschoben." buttons "OK" default button 1 with icon 2 else if probCtr is greater than 1 then display dialog "" & probCtr & " Dateien nicht verschoben." buttons "OK" default button 1 with icon 2 end if end open -- der Handler zur Wahl des Hauptordners on defineFolder() activate me set newFolder to (choose folder) as Unicode text return newFolder end defineFolder -- 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 -- 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" -- der Name 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) -- die sieben Zeichen aus dem Dateinamen ziehen try set curNum to (text 1 thru 7 of fullName) as integer on error set probCtr to probCtr + 1 return end try -- den Ordnernamen errechnen und zusammensetzen set tmpVal to (curNum div 250) - 20000 set firstVal to 5000000 + (tmpVal * 250) set secondVal to firstVal + 249 set folName to (firstVal & "-" & secondVal) as string -- und auch den vollen Pfad zum Unterordner set curFolder to (mainFolder & 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 mainFolder 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 Ich habe Dir das Script als Droplet gespeichert per PM zugestellt. Möglicherweise musst Du es erneut abspeichern.
Gruss, Hans