Hallo Harald,
vielleicht ist das die Lösung: Vielleicht hat ein Droplet diese Begrenzung, aber ein normales Script nicht.
Doch zum Testen habe ich nicht tausende von Dateien zur Verfügung. Deshalb habe ich soeben ein kleines Script geschrieben, mit welchem neun Mal 100 Dateien erzeugt und nach Deinen Vorgaben bennant wurden.
Dann habe ich das Droplet-Script so umgeschrieben (u.a. den "on open()"-Handler entfernt), dass es auch als Programm gespeichert werden kann (Achtung: Bei den Optionen keine der drei Checkboxen aktivieren), aber kein Droplet mehr ist. Du kannst es auch im Dock unterbringen, musst es aber durch Doppelklick starten.
Der Ordner, welcher die Dateien enthält, muss im Dialog ausgewählt werden.
Hier wurden die [#cc0000]900[/#cc0000] Dateien problemlos durchforstet und je die letzte der neun "Bücher" wurde in den Ordner "Letzte_Seiten" verschoben.
global newFolder
global sourceFolder
-- der Pfad zum Quell-Ordner
set sourceFolder to (choose folder) as Unicode text
tell application "Finder"
-- der Ordner, welcher den Quellordner enthält
set sourceContainer to container of folder sourceFolder as Unicode text
-- darin einen neuen Ordner erzeugen ...
try
set newFolder to (make new folder ¬
at container of folder sourceFolder with properties {name:"Letzte_Seiten"}) as Unicode text
on error
set newFolder to sourceContainer & "Letzte_Seiten"
end try
end tell
-- die Dateinamen auflisten ...
set allNames to list folder sourceFolder without invisibles
-- ... und zählen
set nNames to count allNames
if nNames is 0 then
display dialog "Der Ordner ist leer." buttons "OK" default button 1 with icon 0
error number -128
else if nNames is 1 then
display dialog "Da ist nur eine Datei." buttons "OK" default button 1 with icon 0
error number -128
end if
-- die 13stellige Vergleichs-Variable initialisieren
set firstDigits to "0000000000000"
-- eine Rückwärts-Schleife durch die Namen
repeat with i from nNames to 1 by -1
-- der aktuelle Name
set curName to item i of my allNames
-- die ersten dreizehn Zeichen ...
try
set testDigits to text 1 thru 13 of curName
-- ... mit dem Teststring vergleichen
-- wenn keine Übereinstimmmung ...
if testDigits is not equal to firstDigits then
--- ... der Variablen 'testDigits' den neuen String übergeben ...
set firstDigits to testDigits
--- ... und den Handler aufrufen, welcher die Datei verschiebt
moveFile(curName)
end if
end try
end repeat
-- der Finder verschiebt die aktuelle Datei in den neuen Ordner
on moveFile(curName)
try
tell application "Finder" to move file curName of folder sourceFolder to folder newFolder with replacing
end try
end moveFile
Gruss, Hans