Bilder gem. Exceltab. umbennen

Galapapagos

Stammgast
Hallo
Habe einen Ordner mit 3'000 Bilddateien in jpg-Format erhalten. Die Daten sind nach der Artikelnummer vom Hersteller benannt.
Diese Daten muss ich nach unserer Artikelbezeichnung umbennen. Also z.B. von 101319000.jpg zu 132-03305-000.jpg.
Dies betrifft aber von allen 3000 Bildern daraus aktuell nur rund 700, die ich im Sortiment habe und umbenennen möchte. Meine Daten kann ich in Excel exportieren mit Lieferanten- und eigener Nummer.
Gibt es ein Programm (SmartDocument oder Batch-Modus o.ä.), wo ich einen Abgleich machen kann und die jpg-Datei dann in meine Artikelnummer serienmässig umbennen kann?
Irgendwie sowas wie: Wenn der Name der Bilddatei (101319000.jpg) aus den 3000 Bilder auch in der anderen (Excel?-)Tabelle vorkommt (auch 101319000), dann soll es den dazugehörenden neuen Namen (132-03305-000.jpg) nehmen. Die nicht doppelt vorhandenen Dateien sollen nicht berücksicht werden, da bei uns nicht im Sortiment.

Kann mir da von euch jemand sagen, ob es so ein Programm oder eine andere Lösung gibt? Bin für jeden Ratschlag megadankbar, da es mir das mühsame umbenennen von Hand ersparen würde bei rund 2000 Daten jährlich.
Besten Dank im Voraus und sonnige Grüsse.
Galapapagos
 

FreeRider

Stammgast
Hallo Galapagos

Ich denke, dass lässt sich relativ einfach lösen.

Da die Lieferanten- und eigenen Nummern in einer Exceldatei vorliegen würde ich auf die schnelle eine Kombination von Excelformel und Batchdatei vorschlagen.

Ich nehme die Felder A1 und B1 als Datenfelder an und erzeuge in Feld C1 einen zusammengesetzten String:
101319000.jpg 132-03305-000.jpg ren 101319000.jpg 132-03305-000.jpg

Die Formel für "C1" lautet z.b.: ="ren " &A1 &" " &B1 was zu diesem Ergebnis führt: ren 101319000.jpg 132-03305-000.jpg
(Leerzeichen in der Formel beachten)

Danach die Einträge aus Spalte C1:Cxx in einen Texteditor kopieren und die Datei als ".bat" (Namensvergabe nach eigenem Ermessen) im selben Verzeichnis abspeichern wie die bilder liegen.

Wenn du nun das Batch laufen lässt werden alle Dateien entsprechend umbenannt.

Ich empfehle aber, dies zuerst in einem Testdirectory auszuprobieren ob es zum gewünschten Ergebnis führt.

Danke für ein kurzes Feedback, ob dies dein Problem lösen konnte.
 

Nebuk

PCtipp-Moderation
Teammitglied
Hallo Galapapagos

Vor einiger Zeit hatte ich mal ein ähnliches Problem, wenn es auch nicht ganz in dem Umfang war wie du es nutzen musst. Ich hatte dafür eine einfache BAT Datei genutzt. Du kannst dazu die vorhandene Excel Datei nutzen. Kopiere aber vorher kurz die Exceldatei sowie die Ordner für die Bilder, sodass du die Originale noch weiterhin zur Verfügung hast. Arbeite anschliessend mit der Kopie.

Kurze Erklärung. Im angefügten Bild siehst du wie ich meine Datei aufgebaut habe. Spalte A (rot) ist der Befehl den die BAT Datei ausführen soll. Die Spalten B und C (orange) werden gebraucht um den Quelldateinamen (alter Name) zusammen zu setzen. Analog dazu wird in der Spalte D und E (grün) der Name der Zieldatei (neuer Name der Datei) zusammengesetzt. In der Spalte F (gelb) steht die Formel und damit die Werte die wir für die BAT-Datei brauchen. Die Formel für meinen Aufbau sieht so aus =VERKETTEN(A2;" ";B2;C2;" ";D2;E2). Die Formel verkettet den Befehl mit dem Namen der Quell- und der Zieldatei. Zwischen den einzelnen Teilen muss zwingend ein Leerzeichen gesetzt werden, dies wird eben mit den " " gemacht. Wichtig und nicht zu vergessen ist, dass ich im Feld F2 %cd% geschrieben habe. Dies wird gebraucht um den Pfad zu den Bildern zu finden. %cd% bedeutet, dass die Bilder in dem Ordner gesucht werden in der sich die BAT-Datei befindet.

Nun öffnest du den Editor. Den findest du, wenn du auf Start klickst und Editor eingibst. Anschliessend kopierst du die komplette Spalte F in den Editor. Danach kannst du die Datei gleich in den kopierten Ordner mit den ganzen Bildern Speichern. WICHTIG: Du musst die Datei mit der Dateiendung .bat abspeichern, also beispielsweise rename.bat und wirklich in den richtigen Ordner abspeichern (siehe Bild 2). Zum Schluss startest du die neu erstellte BAT-Datei in dem du sie einfach doppelklickst. Jetzt werden im Hintergrund die Dateien umbenannt, dies kann etwas dauern.

Ergänzungen:
  • Deine Quelldatei hat bereits den Datentyp im Namen -> Dann brauchst du natürlich nur eine entsprechende Spalte, eine für die Ziel und Quelldatei. Die angepasste Formel würde wohl so heissen: =VERKETTEN(A2;" ";B2;" ";C2).
  • In den Spalten D und E habe ich mit den Anführungszeichen darstellen wollen, wie vorgegangen werden muss, wenn ein Name Leerzeichen verwendet. -> Hast du keine Leerzeichen in Quell- und Zielnamen, kannst du die Anführungszeichen weglassen.
  • Blau sind die Kommentare. Die müssen dich nicht kümmern, du kannst sie auch weglassen. Falls du sie mit in die BAT-Datei kopierst musst du sicherstellen, dass die zwei Doppelpunkte mit kopiert werden. Siehst du aber im zweiten Bild.

Hoffe damit kannst du was anfangen. Falls was unklar ist oder noch was fehlt, einfach melden!

Gruss
Nebuk

EDIT: Ich sehe FreeRider hat unterdessen ebenfalls den gleichen Ansatz gewählt :)
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    81,9 KB · Aufrufe: 8
  • Unbenannt2.JPG
    Unbenannt2.JPG
    105,4 KB · Aufrufe: 6

FreeRider

Stammgast
Hy

Und falls du das ganze via Makro lösen möchtest (z.b. als Add-in) dann hier der passende Code.

Dieser setzt die entsprechenden Formeln in Spalte C ein (davon ausgehend, dass A und B die Grundwerte ALT/NEU enthalten). Anschliessend löscht es die bestehende BAT-Datei und schreibt diese neu.

Variablen müssen gegebenenfalls angepasst werden. Bitte unbedingt vorher anhand Beispieldaten testen!
Falls Fragen zum VBA-Code bestehen bitte hier posten.

Code:
Sub BilddatenUmbenennen()
Dim strPfad As String
Dim strUmbenennen As String

Dim slgInfo As Single

Dim i As Integer
Dim y As Integer
Dim s As Integer 'Spaltenanzahl

strPfad = "C:\Test\Bilder\umbenennen.bat"

y = 0
s = 1

'Erste Zeile/Spalte auswählen
Range("A1").Select

'Anzahl Zeilen ermitteln - es wird davon ausgegangen, dass die erste Zeile eine Überschrift ist
'und die ausgewählte Spalte vollständig von der ersten bis zur letzten Zeile einen Wert beinhaltet.
'Ansonsten eine entsprechende Spalte unter "Range" einsetzen.
     slgInfo = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
   
'Überschrift in C1 ergänzen - hier kommt die Formel für den RENMAME rein
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "Rename"
    Selection.Offset(1, 0).Select
    
For i = 1 To slgInfo - 1 '=-1 Zeile Überschrift
    'gehe s Spalten nach links und prüfe, ob Wert enthalten ist.
    Selection.Offset(0, -s).Select
    If ActiveCell.Value = "" Then  'wenn kein Wert dann auch kein Eintrag machen
            Selection.Offset(0, s).Select 'wieder in die korrekte Spalte (+s) gehen
            GoTo Leerezeile
    Else
            Selection.Offset(0, s).Select
    End If
    ActiveCell.FormulaR1C1 = "=""ren "" &RC[-2] &"" "" &RC[-1]"
    Selection.Offset(1, 0).Select
    y = y + 1
Leerezeile:
Next

'Zurückspringen in erste Datenzeile
            Selection.Offset(-y, 0).Select

On Error Resume Next
Kill strPfad
On Error GoTo 0

Open strPfad For Output As #1
Print #1, "%cd%"

For i = 1 To y
    strUmbenennen = ActiveCell.Value
    Print #1, strUmbenennen
    Selection.Offset(1, 0).Select
Next
Close #1
End Sub
 
Zuletzt bearbeitet von einem Moderator:

Galapapagos

Stammgast
Hallo FreeRider
Wow, Danke für deinen Vorschlag. Das hört sich gut an. Werde ich baldmöglichst ausprobieren und dir Bescheid geben.
Aber im Voraus schon mal vielen Dank für deine Hilfe und den Ratschlag.
Beste Grüsse
Galapapagos
 

Galapapagos

Stammgast
Hallo Nebuk
Auch dir ganz vielen Dank für deine Hilfe und den Ratschlag.
Ich werde somit deinen und den FreeRider-Vorschlag testen und dann "rapportieren".
Beste Grüsse
Galapapagos
 
Oben