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 '-------------------------------------------------------------------------------------------------------