Applescript: im Dateinamen eine Versionsnummer erhöhen

T

Tastentipper

Aktives Mitglied
Thread Starter
Dabei seit
26.02.2004
Beiträge
543
Reaktionspunkte
15
Hallo,

ich möchte gern in einem Ordner in dem Dokumentfiles liegen, Versionsnummern per Applescript erhöhen, die eventuell vergeben sind.

So könnte es zum Beispiel sein, dass folgende Dateinamen dort liegen:
Test_V01.indd
Umschlag_V02.indd
Korrektur_V01.indd
Layout_V04.xlsx

Gibt es eine Möglichkeitm dies per Applescript zu lösen ohne jede Datei per Hand ändern zu müssen?
Wenn ja ,wie müsste das Script dafür aussehen? Ich komme nicht weiter. Dies ist mein Ziel:

Test_V01.indd >> Test_V02.indd
Umschlag_V02.indd >> Umschlag_V03.indd
Korrektur_V01.indd >> Korrektur_V02.indd
Layout_V04.xlsx >> Korrektur_V05.xlsx
 
da musst du halt mal die ganzen string operationen von applescript durchgucken, den namen kannst ja bestimmt bei _V und . trennen lassen, und dann die zahl erhöhen.
 
ich würde es via do shell script machen:
Code:
# V010 -> V011
echo "fileV010name" | perl -pe 's/V(\d+)/V.++($a=$1)/e'
fileV011name
 
Zuletzt bearbeitet:
Vielen Dank für eure Hilfe, aber ich komme irgendwie nicht weiter damit.

Ich zeige euch mal, was ich bisher habe:

tell application "Finder"
set target_files to every file of front window whose name contains "_V01"
repeat with current_file in target_files
set new_file_name to my getNewFileName(name of current_file)
set name of current_file to new_file_name
end repeat
end
tell

on getNewFileName(old_name)
set {old_delims, my text item delimiters} to ¬
{my text item delimiters, "_V01"}
set name_parts to text items of old_name
set my text item delimiters to "_V02"
set new_name to name_parts as string
set my text item delimiters to old_delims
return new_name
end getNewFileName


Das Problem ist nur leider, dass ich damit ja nur einen Step habe. Wenn ich jetzt bei der 24. Version bin, würde das ja bedeuten, dass ich im Script die Suchabfrage z.B. bis _V99 mache. Das klappt aber auch nur, wenn ich davon ausgehe, dass es nie mehr als 99 Versionen gibt.
 
du musst deine filenames richtig auftrennen in Test_V + 01 + .indd (siehe #2) und dann den nummernpart inkrementieren und anschliessend wieder zusammenbauen.
mit AS ist das immer ein ziemliches geschraube und ausserdem in der ausführung lahm.

deshalb:
Code:
tell application "Finder"
    set target_files to every file of front window whose name contains "_V"
    repeat with current_file in target_files
        set new_filename to my getNewFileName(name of current_file)
        set name of current_file to new_filename
    end repeat
end tell

on getNewFileName(filename)
    set new_filename to do shell script "echo " & filename & " | perl -pe 's/_V(\\d+)/_V.++($a=$1)/e'"
    return new_filename
end getNewFileName
 
  • Gefällt mir
Reaktionen: Malice 313 und Tastentipper
ausserdem musst du eine liste mit den dateinamen anlegen und, mit den höchsten versionsnummern zuerst, sortieren. dann erst die schleife darauf ausführen.
und jeweils prüfen, ob der neue filename nicht doch schon existiert.
fehler würde ich in eine datei in's aktuelle finderfenster loggen.
 
  • Gefällt mir
Reaktionen: KOJOTE
@Olivetti: Wow. Ich bin total begeistert. Das funktioniert auf perfekt. Ich muss gar nichts mehr anpassen.

Vielen lieben Dank, dass du dir Zeit genommen hast. Ich gehe heute auf jeden Fall glücklich ins Wochenende.
 
Zurück
Oben Unten