meta data for this page
Dies ist eine alte Version des Dokuments!
Bildnummerierung
Wenn man mehrere Bilder gleich benennen und mit einer fortlaufenden Nummer versehen will, eignet sich dazu hervorragend die Stapelverarbeitung von FixFoto.
Soll dies innerhalb einer Bearbeitung mehrerer Bilder per Skript erfolgen, wird hier beispielhaft gezeigt, wie diese Aufgabe per Skript gelöst werden kann.
Es wird ein Bildername "NameNeu" festgelegt und der Ordner "Zielordner" abgefragt, in dem die nummerierten Bilder gespeichert werden sollen. Da in diesem Ordner bereits nummerierte Bilder mit dem neuen Namen abgelegt sein können, wird ermittelt, welche höchste Nummer dort existiert. Diese höchste Nummer, sie kann auch 0 sein, wird bei der danach folgende Benennung und Nummerierung berücksichtigt.
Option Explicit
const NameNeu = "Muster" 'neuen Bildnamen festlegen Dim Abbruch : Abbruch = false
Dim fso : Set fso = CreateObject("Scripting.FileSystemObject") Dim Bilder,Zielordner,k
call main if not Abbruch then k = Bild_Max(Zielordner,NameNeu & "_") 'Korrekturwert für die Bildnummer call B_Nummerierung 'Bildnummerierung end if
Set fso = Nothing '------------------------------------------------------------------------------------------------------- sub main
Bilder = FF_GetSelection(1) '0 = alle Dateien der Computeransicht '1 = alle selektierten Dateien der Computeransicht '2 = alle Dateien der aktuellen Bilderliste '3 = alle selektierten Dateien der aktuellen Bilderliste if len(Bilder) = 0 then msgbox "Es wurden keine Bilder ausgewählt!",vbInformation,"Abbruch" Abbruch = true exit sub end if
do 'Zielordner abfragen FF_SetCurrentPath FF_GetImagePath Zielordner = FF_EnterPath(false,"Ordner auswählen!") if Zielordner <> "" then exit do loop
end sub '------------------------------------------------------------------------------------------------------- Function Bild_Max(OrdnerAngabe,FilterAngabe) 'maximale Bildnummer ermitteln Dim f,f1,fc,MBild,pos
Set f = fso.GetFolder(OrdnerAngabe) Set fc = f.Files
For Each f1 in fc if instr(f1.Name,FilterAngabe) = 1 then if f1.Name > MBild then MBild = f1.Name end if Next
if MBild = "" then Bild_Max = 0 else pos = InStrRev(MBild,"_") if pos > 0 then Bild_Max = mid(MBild,pos+1,4) else Bild_Max = 0 if IsNumeric(Bild_Max) then Bild_Max = Bild_Max *1 else k = 0 end if
Set f = nothing Set fc = nothing
End Function '------------------------------------------------------------------------------------------------------- sub B_Nummerierung 'ausgewählte Bilder nummerieren Dim Array,b,extension,suffix
Array = split(Bilder, vbNewLine)
for b = 0 to ubound(Array) 'Bilder mit neuem Namen und fortlaufender FF_LoadImage(Array(b)) ' Nummerierung abspeichern extension = "." & fso.GetExtensionName(Array(b))
suffix = b +1 +k do while len(suffix) < 4 : suffix = "0" & suffix : loop 'len(suffix) < 4, wenn Nummerierung 4-stellig
FF_SaveImage Zielordner & "\" & NameNeu & "_" & suffix & extension,0 next
end sub '-------------------------------------------------------------------------------------------------------