meta data for this page
  •  

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.

  1. Option Explicit
  2.  
  3. const NameNeu = "Muster" 'neuen Bildnamen festlegen
  4. Dim Abbruch : Abbruch = false
  5.  
  6. Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
  7. Dim Bilder,Zielordner,k
  8.  
  9. call main
  10. if not Abbruch then
  11. k = Bild_Max(Zielordner,NameNeu & "_") 'Korrekturwert für die Bildnummer
  12. call B_Nummerierung 'Bildnummerierung
  13. end if
  14.  
  15. Set fso = Nothing
  16. '-------------------------------------------------------------------------------------------------------
  17. sub main
  18.  
  19. Bilder = FF_GetSelection(1) '0 = alle Dateien der Computeransicht
  20. '1 = alle selektierten Dateien der Computeransicht
  21. '2 = alle Dateien der aktuellen Bilderliste
  22. '3 = alle selektierten Dateien der aktuellen Bilderliste
  23. if len(Bilder) = 0 then
  24. msgbox "Es wurden keine Bilder ausgewählt!",vbInformation,"Abbruch"
  25. Abbruch = true
  26. exit sub
  27. end if
  28.  
  29. do 'Zielordner abfragen
  30. FF_SetCurrentPath FF_GetImagePath
  31. Zielordner = FF_EnterPath(false,"Ordner auswählen!")
  32. if Zielordner <> "" then exit do
  33. loop
  34.  
  35. end sub
  36. '-------------------------------------------------------------------------------------------------------
  37. Function Bild_Max(OrdnerAngabe,FilterAngabe) 'maximale Bildnummer ermitteln
  38. Dim f,f1,fc,MBild,pos
  39.  
  40. Set f = fso.GetFolder(OrdnerAngabe)
  41. Set fc = f.Files
  42.  
  43. For Each f1 in fc
  44. if instr(f1.Name,FilterAngabe) = 1 then
  45. if f1.Name > MBild then MBild = f1.Name
  46. end if
  47. Next
  48.  
  49. if MBild = "" then
  50. Bild_Max = 0
  51. else
  52. pos = InStrRev(MBild,"_")
  53. if pos > 0 then Bild_Max = mid(MBild,pos+1,4) else Bild_Max = 0
  54. if IsNumeric(Bild_Max) then Bild_Max = Bild_Max *1 else k = 0
  55. end if
  56.  
  57. Set f = nothing
  58. Set fc = nothing
  59.  
  60. End Function
  61. '-------------------------------------------------------------------------------------------------------
  62. sub B_Nummerierung 'ausgewählte Bilder nummerieren
  63. Dim Array,b,extension,suffix
  64.  
  65. Array = split(Bilder, vbNewLine)
  66.  
  67. for b = 0 to ubound(Array) 'Bilder mit neuem Namen und fortlaufender
  68. FF_LoadImage(Array(b)) ' Nummerierung abspeichern
  69. extension = "." & fso.GetExtensionName(Array(b))
  70.  
  71. suffix = b +1 +k
  72. do while len(suffix) < 4 : suffix = "0" & suffix : loop 'len(suffix) < 4, wenn Nummerierung 4-stellig
  73.  
  74. FF_SaveImage Zielordner & "\" & NameNeu & "_" & suffix & extension,0
  75. next
  76.  
  77. end sub
  78. '-------------------------------------------------------------------------------------------------------
  79.