-- auf wie viele Zeichen sollen die Dateinamen reduziert werden
set charNo to 5
-- wie ist das Suffix der zu ändernden Datein
set myFileSufix to ".pdf"
-- Wo soll das Log gesichert werden, das nicht geänderte Dateien protokolliert
set logPath to (path to desktop folder as string) & "Log.txt"
-- >>> Suchen
set myFiles to paragraphs of (do shell script "find " & quoted form of POSIX path of (choose folder) & " -iname \"*" & myFileSufix & "\"")
-- Schleife, die die gefunden Dateien abarbeitet
repeat with nFile in myFiles
try
-- Dateinamen holen
set AppleScript's text item delimiters to "/"
set nFileName to last text item of nFile
-- Mutterornder zu der Datei holen
set AppleScript's text item delimiters to nFileName
set nFileParent to first text item of nFile
-- Dateinmane auf gewünschte Anzahl Zeichen schneiden
if ((count of (every character of nFileName)) > charNo) then set nFileNameNew to my schneidenAnfangBeibehlaten(nFileName, charNo)
-- Neuen Dateinamen + Mutterordner verbinden
set nFileNew to nFileParent & nFileNameNew & myFileSufix
-- prüfen, ob es schon eine Datei mit dem Namen gibt
try
alias (nFileNew as POSIX file)
my schreibeZuDatei(logPath, nFileNew & return, false, false)
on error
try
do shell script "mv " & quoted form of nFile & " " & quoted form of nFileNew
on error
-- hier ein Log?
end try
end try
on error
-- hier ein Log?
end try
end repeat
-- Anzahl Zeichen vom Anfang erhalten
on schneidenAnfangBeibehlaten(txt, anzahl)
set AppleScript's text item delimiters to ""
return (characters 1 thru anzahl of txt) as string
end schneidenAnfangBeibehlaten
-- zu Datei schreiben
on schreibeZuDatei(pfadZuDatei, schreibeInhalt, ueberschreiben, alsListe)
try
set the pfadZuDatei to the pfadZuDatei as text
set the offeneDatei to open for access file pfadZuDatei with write permission
if ueberschreiben is true then set eof of the offeneDatei to 0
if (alsListe is true) then
write schreibeInhalt to the offeneDatei starting at eof as list
else
write schreibeInhalt to the offeneDatei starting at eof
end if
close access the offeneDatei
return true
on error fehlerMeldung number fehlerNr
close access file pfadZuDatei
my fehlerProtokoll(fehlerNr, fehlerMeldung)
return false
end try
end schreibeZuDatei