akoch85
Goto Top

Power Shell Script zu Bild Suche

Hallo liebe Mitglieder,
ich brauche dringend eure Hilfe.

Problemstellung:

1.Bilder anhand des Namens z.B. "B1876GH.jpg" aus einem Ordner herausziehen diesem neuen Namen vergeben z.B."123.jpg" vergeben.

Die Name habe ich in einer Excel-Liste stehen in zwei Spalten alter Name Spalte A1 neben dran ist der neue Name B1.
Es handelt sich um tausenden von Bildern. Gibt es eine Möglichkeit das ganze auf eine schnellere Art zu realisieren als manuell suchen, rauskopieren und umbenennen.

Ich wäre sehr dankbar für die Hilfe.


Viele Grüße

Andreas

Content-Key: 294138

Url: https://administrator.de/contentid/294138

Ausgedruckt am: 19.03.2024 um 04:03 Uhr

Mitglied: 114757
Lösung 114757 25.01.2016 aktualisiert um 13:28:31 Uhr
Goto Top
Moin,
Excel File als CSV speichern so dass diese so aussieht:
"Old";"New"  
"datei_alt.jpg";"datei_neu.jpg"  
"datei_alt2.jpg";"datei_neu2.jpg"  
usw.
Dann folgenden Code verwenden
cd 'c:\Bilderordner'  
$csv = Import-CSV 'c:\Dateinamen.csv' -Delimiter ";"  
$csv | ?{Test-Path $_.Old} | %{rename-item $_.Old -NewName $_.New -Force}
Feddich.

Gruß jodel32
Mitglied: emeriks
emeriks 25.01.2016 um 09:49:27 Uhr
Goto Top
Hi,
1.Bilder anhand des Namens z.B. "B1876GH.jpg" aus einem Ordner herausziehen diesem neuen Namen vergeben z.B."123.jpg" vergeben.

Die Name habe ich in einer Excel-Liste stehen in zwei Spalten alter Name Spalte A1 neben dran ist der neue Name B1.
Es handelt sich um tausenden von Bildern. Gibt es eine Möglichkeit das ganze auf eine schnellere Art zu realisieren als manuell suchen, rauskopieren und umbenennen.
ja, die Kirche im Dorf lassen?
Will sagen: Nicht gleich so kopliziert denken. Wie wäre es damit:
Falls es eine einmalige oder eher seltene Aufgabe ist - In der Excel-Tabelle erstellst Du über eine Funktion die Verschieb- (Umbennen-) Befehle
Bsp.
Spalte A = alter Name
Spalte B = neuer Name
Spalte C = "move " & A1 & " " & B1

Die Formel in Spalte C überträgst Du auf alle Zeilen. Dann die Spalte C kopieren und in Notepad einfügen. Das Notepad-Dokument als CMD speichern und ausführen. Alternativ kannst Du die Befehle direkt in eine Eingabeaufforderung reinkopieren.

Wichtig: Wenn Spalten A und B keine vollständigen Pfade sind, dann muss die CMD vorher ins entsprechende Verzeichnis wechseln oder die Formel anpassen:
Spalte C = "move C:\Ordner\" & A1 & " C:\Ordner\" & B1

E.
Mitglied: akoch85
akoch85 25.01.2016 um 10:19:59 Uhr
Goto Top
Hallo jodel32,
super es funktioniert soweit, Ich brauche nur noch die Bilder die zu umbenennen sind erstmal aus dem Ordner mit tausenden Bildern in ein Ordnern kopiert haben und erst danach umbenennen.


Vielen Danke im Voraus face-smile
Mitglied: 114757
114757 25.01.2016 aktualisiert um 10:41:31 Uhr
Goto Top
War das jetzt ne Frage ??
Mitglied: akoch85
akoch85 25.01.2016 um 10:45:51 Uhr
Goto Top
Ja, wie kann ich zuerst die Bilder die zu Umbenennen sind anhand des alten Namen in der Excel Liste "old" aus dem Ordner A in Ordner B rausfischen und erst dann umbenennen ?
Mitglied: 114757
Lösung 114757 25.01.2016 aktualisiert um 13:28:25 Uhr
Goto Top
Zitat von @akoch85:

Ja, wie kann ich zuerst die Bilder die zu Umbenennen sind anhand des alten Namen in der Excel Liste "old" aus dem Ordner A in Ordner B rausfischen und erst dann umbenennen ?
Fischen tu ich am Mittelmeer face-wink
Brauchst du garnicht "rausfischen" kannst du direkt im gefundenen Ordner umbenennen. Wichtig, Spaltennamen der CSV wie oben (Old/New).
Kommentare siehe Code
# CSV Datei importieren
$csv = Import-CSV 'c:\Dateinamen.csv' -Delimiter ";"  
# Alle Dateien in allen Unterordnern eines Ordners auflisten
$files = gci 'C:\Oberordner' -Recurse -File  
# Für jede Zeile in der CSV
foreach($fname in $csv){
    # Vergleiche den aktuellen Dateinamen aus der CSV mit den ermittelten Dateien und bei Übereinstimmung benenne sie um
    $files | ?{$_.Name -eq $fname.Old} | rename-item -NewName $fname.New -Force
}
Mitglied: akoch85
akoch85 25.01.2016 um 10:57:22 Uhr
Goto Top
Ich darf die nicht in dem Ordner umbenennen face-smile Ich muss eine zweite Instanz mit einem neuen Namen anlegen aber nur von ausgewählten Bildern. Deswegen hätte ich diese gern in einem anderen Ordner umbenannt und dann wieder reinkopiert face-smile
Mitglied: 114757
Lösung 114757 25.01.2016 aktualisiert um 13:28:22 Uhr
Goto Top
Naja, umständlich aber jeder wie er will.
Kannst du ja obigen Code verwenden und anstatt dem Umbenennen ein Move-Item einsetzen ... feddich
Mitglied: akoch85
akoch85 25.01.2016 um 11:18:28 Uhr
Goto Top
Irgendwie funktioniert es nicht. Könntest du mir da etwas helfen ?


# CSV Datei importieren
$csv = Import-CSV 'c:\Dateinamen.csv' -Delimiter ";"  
# Alle Dateien in allen Unterordnern eines Ordners auflisten
$files = gci C:\Bilder' -Recurse -File  
# Für jede Zeile in der CSV
foreach($fname in $csv){
    # Vergleiche den aktuellen Dateinamen aus der CSV mit den ermittelten Dateien und bei Übereinstimmung benenne sie um
    $files | ?{$_.Name -eq $fname.Old} | move-item 'c:\Bilder_Neu'   
}
Mitglied: 114757
Lösung 114757 25.01.2016 aktualisiert um 13:28:20 Uhr
Goto Top
Du hast den Parameter -destination nicht angegeben
$files | ?{$_.Name -eq $fname.Old} | move-item -Destination 'c:\Bilder_Neu'  
und nicht vergessen das die Spaltenübeschriften Old und New heißen müssen ansonsten musst du die Namen im Skript anpassen.

Irgendwie funktioniert es nicht.
100 Punkte für eine der besten Fehlerbeschreibungen der Welt ! face-sad
Lüppt hier wie immer einwandfrei...