modernsolution
Goto Top

Bildnamen automatisch in Masse umbenennen - Ordnerstruktur muss beibehalten werden

Hallo Leute

ich benötige einmal eure Hilfe zur folgender Situation:

Ein Vorlieferant stellt uns Artikelbilder sehr bescheiden zur Verfügung.

Nun muss ich eine möglichkeit finden diese Bildnamen in Masse zu verändern.

Die Ordnerstruktur sieht wie folgt aus :


Bildorder/Kapitelorder/ -> bildname.jpg

Wir haben die Situation das beispielweise 3 Bilder in einem Order liegen wo das

1. Bild -> 3123as32.jpg
2. Bild -> 212dssasd.jpg
3. Bild -> bild01.jpg

heist.

Nun muss ich immer die Situation haben das die bilder in eine Reihenfolge umbenannt werden die wie folgt aussieht

1. Bild -> 3123as32.jpg -> 301.jpg
2. Bild -> 212dssasd.jpg -> 302.jpg
3. Bild -> bild01.jpg ->303.jpg

sollte es weitere bilder geben müssen diese 304,305,306 usw heisen ...

Desweiteren muss die Struktur der Ordner beibehalten bleiben.....

Es müsste quasi ein Script sein den der Name des JPG nicht interessiert und es immer heist "bennene das 1. Bild in 301.jpg um, das 2. Bild in 302.jpg usw. "

Kann man dies irgendwie mit einem Script oder so drüberlaufen lassen ?

Würde mich über eure Hilfe freuen face-smile

LG TIMO

Content-ID: 262146

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

Ausgedruckt am: 19.11.2024 um 22:11 Uhr

colinardo
Lösung colinardo 03.02.2015 aktualisiert um 21:09:58 Uhr
Goto Top
Hallo Timo,
mit Powershell würde das etwa so aussehen:
$rootFolder = 'c:\Bilder'  
gci $rootFolder -Recurse | ?{$_.PSIsContainer} | %{
    $jpgs = gci $_.Fullname -Filter "*.jpg"  
    if($jpgs){
        $cnt = 1
        $jpgs | %{rename-item $_.Fullname -newname "$((300 + $cnt).toString()).jpg" -Force -EA SilentlyContinue ; $cnt++ }  
    }
}
Grüße Uwe
modernsolution
modernsolution 03.02.2015 um 20:58:37 Uhr
Goto Top
vielen Dank für die schnelle Hilfe.

Hab noch nie was mit Powershell gemacht .. muss ich das einfach dort einfügen oder wie genau funktioniert das ?

Sry für die Unwissenheit face-smile
colinardo
colinardo 03.02.2015 aktualisiert um 21:06:07 Uhr
Goto Top
Zitat von @modernsolution:

vielen Dank für die schnelle Hilfe.

Hab noch nie was mit Powershell gemacht .. muss ich das einfach dort einfügen oder wie genau funktioniert das ?
back-to-topAnleitung: Wie starte ich Powershell-Scripte
  • Zuerst speicherst man den Code in einer Textdatei mit der Endung .ps1.
  • Wenn man zum ersten mal Powershell-Scripte ausführt, musst man einmalig vorher noch das Ausführen von Scripten im User-Account freischalten. Dazu öffnet man eine Powershell-Konsole und gibt dort den Befehl Set-ExecutionPolicy RemoteSigned -Force ein. Um diese Policy für alle User auf dem Rechner zu setzen muss man diesen Befehl in einer Powershell-Konsole mit Admin-Rechten starten. Noch ein Hinweis für 64-Bit-Systeme: Hier sollte sowohl für die 32bit und 64Bit Variante der Powershell die Policy in einer Admin-Konsole gesetzt werden: Set-ExecutionPolicy RemoteSigned -Force; start-job { Set-ExecutionPolicy RemoteSigned -Force } -RunAs32
  • Jetzt kann das Powershell-Script in der Powershell-Konsole mit Eingabe des kompletten Pfades der Scriptdatei, oder mit einem Rechtsklick auf die Script-Datei :Mit Powershell ausführen gestartet werden.
back-to-topStarten eines Scriptes in einer Powershell-Konsole
Immer den kompletten Pfad zum Script angeben, und wenn er Leerzeichen beinhaltet in Anführungszeichen einschließen:
"C:\Pfad\script.ps1"
Liegt das Script im selben Verzeichnis in dem man sich gerade befindet, kann man es auch so abkürzen:
.\script.ps1
back-to-topMethoden zum Starten von PS-Scripten aus Batch und Kommendozeilen heraus:
Hier gibt es unterschiedliche Methoden, je nach Anforderungen gibt es hier einige Besonderheiten vor allem bei Leerzeichen in Pfaden zu beachten!
Der einfachste Aufruf sieht hier so aus:
powershell.exe -File "C:\Pfad\Script.ps1"
Wenn man dem Script Parameter übergeben möchte:
powershell.exe -File "C:\Pfad\Script.ps1" "Parameter 1" "Parameter 2"
Wenn man "benannte" Parameter übergeben möchte (die einfachen Hochkommas um den Scriptpfad werden benötigt wenn er Leerzeichen beinhaltet):
powershell.exe -command "&'C:\Pfad\Script.ps1' -par1 'Wert1' -par2 'Wert2'"
Man kann auch mehrere Scripte hintereinander ausführen lassen:
powershell.exe -command "&'C:\Pfad\Script1.ps1';&'C:\Pfad\Script2.ps1'"
modernsolution
modernsolution 03.02.2015 um 21:10:25 Uhr
Goto Top
Funktioniert - dank dir face-smile