Seriennummer-Dateinamen um n erhöhen

Dieses Thema im Forum "Scripting und Automatisierung" wurde erstellt von bsecow, 07.07.2006.

  1. bsecow

    bsecow Thread Starter MacUser Mitglied

    Beiträge:
    344
    Zustimmungen:
    19
    MacUser seit:
    27.12.2005
    Hi,

    ich hab ein kleines Problem hier...
    [unnötige Vorgeschichte, brauche ne Pause :O]
    Hab ein Galeriescript, in dem ich bisher immer so speicherte, dass für jedes neue Album ein Ordner "Event1" usw. angelegt wird, und da beginnt die Nummerierung der Bilder jeweils von 1 an. War so schön übersichtlich, auch wenn es einiges mehr an Programmieraufwand erforderte, damit er immer richtig begann und bei gesperrten Datensätzen nicht total durcheinanderkam. Fragt mich nicht, warum ich das so gemacht hab. :x
    Bisher hatte ich neue Alben und Bilder immer über phpMyAdmin verwaltet, weil ich noch nicht zur Erstellung einer Admin-Oberfläche kam.
    Jetzt hab ich die Adminfunktionen soweit fertig, aber dann fiel mir auf: Es gibt keinen praktikablen Weg, dass das Script herausfindet, wie denn nun der Name sein muss (erst 100 Dateinamen auslesen und dann überprüfen, ob nicht noch ein gesperrter Datensatz hinterherkommt für jedes einzelne Bild wäre ja blöd).
    Also Kommando zurück, ab jetzt werden die Bilder unter der Id aus der MySQL-Tabelle abgespeichert.
    [/unnötige Vorgeschichte, brauche ne Pause :O]

    Ich brauche nun eine Möglichkeit, die Dateinamen des Formates n.jpg (n von 1 bis unendlich theoretisch) so zu ändern, dass sie (n+x).jpg lauten. Also statt 2.jpg z.B. 102.jpg.
    PS-Stapelverarbeitung schien erst wie dafür geschaffen, man kann ja schließlich den Startwert der Seriennummer angeben, aber dummerweise geht die nicht von 1 los und dann auf 2, 3, 4 usw., sondern schaut halt nur auf die Anfangsziffer, d.h. die Reihenfolge wird total verdreht (1, 10, 11 oder so).

    Gibt's da ne Lösung per AppleScript? Habe davon leider nicht wirklich Ahnung, aber Dateinamen zerlegen, ersten Teil als int behandeln, Wert dazuaddieren und umbenannt in ein neues Verzeichnis ablegen müsste doch gehen, oder? :)

    Hab hier nur bedingt Inet (Urlaub) und kann deshalb leider auch nicht so lange AppleScript-Tutorials durcharbeiten und herumcoden, bis ich das selber hinbekomm. Vielleicht gibt es aber ja schon eine fertige Lösung? :>

    Danke und ciao,
    BSECow

    edit: Und ich hab zwar Urlaub, aber Zeit, um etwa 100 Dateien umzubennen hab ich leider nicht. ;)
     
  2. goegg-art

    goegg-art MacUser Mitglied

    Beiträge:
    33
    Zustimmungen:
    2
    MacUser seit:
    04.08.2005
    hallo

    bin mir zwar nicht sicher ob ich alles verstanden habe
    aber das Tool "Renamer4Mac" sollte das alles können.
    http://www.power4mac.com/renamer/

    oder soll das immer wieder als AppleScript laufen bei gewissen Aktionen?
     
  3. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Eine Applescript Lösung kann ich Dir nicht anbieten.
    In der Z Shell (im Terminal) geht es aber recht einfach:
    Code:
    zsh
    autoload zmv
    zmv '([[:digit:]]#).jpg' sub/`echo '$((\$1+10))'`.jpg
    Kurze Erklärung:
    Zeile 1: zsh starten
    Zeile 2: zmv Modul laden
    Zeile 3: alle Dateien der Form n.jpg im aktuellen Verzeichnis in (n+10).jpg umbenennen und ins Unterverzeichnis 'sub' verschieben.

    Ich muss Dir allerdings dazu sagen, dass Du evtl. nicht gründlich genug nachgedacht hast und die resultierenden Dateinamen möglicherweise Deinen Erwartungen nicht vollständig enstprechen.
    Das Abwandeln des obigen Kommandos ist aber einfach ;).
    Du solltest Dir außerdem klarmachen, unter welchen Voraussetzungen Dateien am Zielort möglicherweise überschrieben werden (also: zumindest während der Testphase Sicherheitsbackup machen!).

    HTH
     
  4. bsecow

    bsecow Thread Starter MacUser Mitglied

    Beiträge:
    344
    Zustimmungen:
    19
    MacUser seit:
    27.12.2005
    Was es nicht alles gibt... :)

    Von der Konzeption her passte das schon, hab dieses mal wirklich laaaange überlegt, um nicht schon wieder alles falsch zu machen in der Eile. ;)

    Ich danke euch beiden... und werde mich zu Hause mal nach einem Buch umschauen, dass etwas "tiefergehende" Themen (für jemanden, dessen einzige Shell-Aktivität noch vor einem halben Jahr auf einem Webserver stattfand) behandelt. ;>
     
  5. chebfarid

    chebfarid MacUser Mitglied

    Beiträge:
    894
    Zustimmungen:
    75
    MacUser seit:
    05.10.2005
    Oder wenn's weniger "Unix-kryptisch", mit AppleScript sein soll:
    das folgende Skript kompilieren und als Anwendung/Droplet speichern. In jedem Ordner der auf sein Icon gezogen wird, werden dann die alten Dateinamen mit Nummern überschrieben, die Startnummer kannst Du selbst aussuchen...

    Code:
    on open thisFolder
    	display dialog "Bitte die Startnummer für File-Nummerierung eingeben:" default answer 1
    	set startNumber to text returned of the result as integer
    	tell application "Finder"
    		set thisFolder to thisFolder as alias
    		set theFiles to every item of thisFolder
    		repeat with aFile in theFiles
    			set theExtension to name extension of aFile
    			set newName to (startNumber & "." & theExtension) as string
    			set name of aFile to newName
    			set startNumber to startNumber + 1
    		end repeat
    	end tell
    end open
    Frohes scripten
    Farid
     
  6. bsecow

    bsecow Thread Starter MacUser Mitglied

    Beiträge:
    344
    Zustimmungen:
    19
    MacUser seit:
    27.12.2005
    Hi,

    vielen Dank für diese Lösung. :)
     
Die Seite wird geladen...

Diese Seite empfehlen