Jump to content

Powershell Dateien umbennenen mit variablen aus Tabelle


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo miteinander,

 

ich hoffe, dass ich hier jemanden finde, der mir etwas auf den Weg helfen kann oder mir sagen kann, wo ich am besten weitersuche.

Ich habe etwas über 1.000 Dateien, die ich vom Dateinamen her umbenennen will. Im Moment beginnen die Artikel mit einer 6 stelligen Artikelnummer, gefolgt von einem _ Unterstrich und dann einer beliebigen Bezeichnung, +Dateiendung (.jpg).

Ziel ist es, die Dateien so umzubenennen, dass der hintere Teil verändert will. Abschneiden kann ich ihn schon mit folgendem Befehl:

 

Get-ChildItem *.jpg | Rename-Item -NewName {$_.Name.Substring(0,6)+ $_.Extension}

 

Zusätzlich habe ich eine Exceltabelle, die auf dieser 6-stelligen Artikelnummer basiert (Spalte A enthält also z.B. alle Artikelnummern) und Spalte B hat dann die zukünftige Dateibezeichnung. 


Vorgestellt habe ich mir, erst den o.g. Befehl zu verwenden, damit ist dann der Dateiname (-Endung) auch mein Suchbegriff in der Tabelle.
Aber wie baue ich nun ein Script, dem ich sagen kann: Schau in diese Tabelle und Suche nach dem Dateinamen in Spalte A und wenn Du den gefunden hast, dann nimm die Bezeichnung aus Spalte B und baue den neuen Dateinamen auf nach dem Schema: Dateiname ALT_BezeichnungausSpalteB.Dateiendung. 

 

Ich werde ja wahrscheinlich eine Schleife einbauen müssen, die das Ergebnis vom Get-Childitem speichert und einer Variablen und dann nach dieser die Tabelle durchsucht und das Ergebnis mir in eine andere Variable nimmt. Aber wie komme ich mit der Powershell in meine Tabelle?


Danke für Eure Hilfe

ELE

 

bearbeitet von Eledris
Link zu diesem Kommentar
vor einer Stunde schrieb Eledris:
 

Ich werde ja wahrscheinlich eine Schleife einbauen müssen, die das Ergebnis vom Get-Childitem speichert und einer Variablen und dann nach dieser die Tabelle durchsucht und das Ergebnis mir in eine andere Variable nimmt. Aber wie komme ich mit der Powershell in meine Tabelle?

ELE, willkommen im MCSE-Board.

 

Die Schleife ist schon mal ne gute Idee ....  ;-) :thumb1:  Deine Excel-Liste ist hoffentlich eine CSV-Datei. Wenn nicht, wäre es hilfreich, wenn Du sie in eine CSV-Datei umwandlest. Damit kann Powershell ganz problemlos umgehen. Für den Anfang solltest Du Dir die cmdlets Import-Csv, Forach-Object und die Hilfe für about_if und vielleicht about_foreach, about_comparison_operators und about_split.

Du solltest immer die komplette HIlfe lesen - inklusive der Beispiele - um zu lernen, wie man die cmdlets benutzt.

bearbeitet von BOfH_666
Link zu diesem Kommentar

Hallo BOfH_666,

 

vielen, vielen Dank für diese Tipps. Ich habe alle Artikel durchgelesen und bin am Ende mit einem ganz einfachen Weg "durchgekommen".
Das import-csv cmdlets war entscheidend :) Zudem konnte ich durch die erste Codezeile aus meinem Ursprungspost ja auch sicherstellen, dass die Dateien durch diese Ausführung schon exakt wie die Artikelnummern heissen. So konnte ich in Excel einfach eine Zelle mit dem gesamten neuen Dateinamen (einschließlich Endung) neben den alten Dateinamen per Formel einsetzen und hatte mein Ergebnis. 


Gelöst habe ich es, da es eben nur einmal laufen muss dann ganz statisch und der Aufwand sich damit zu beschäftigen ist im Vergleich zur manuellen Arbeit alles umzubenennen immernoch ein riesen Zeitgewinn.

 

$path = 'C:\test'
$TargetDir = 'C:\test'
Import-Csv c:\test\testtable.csv -delimiter ";"| Foreach-Object {
    $Src = Join-Path -Path $TargetDir -ChildPath $_.dateinameALT
    $Dst = Join-Path -Path $TargetDir -ChildPath $_.dateinameNEU
    Rename-Item -Path $Src -NewName $Dst
}

 

 

Nochmal, vielen herzlichen Dank! Ich glaube wir hören uns hier jetzt öfter :)


Viele Grüße

Ele

Link zu diesem Kommentar
vor einer Stunde schrieb Eledris:

vielen, vielen Dank für diese Tipps. Ich habe alle Artikel durchgelesen und bin am Ende mit einem ganz einfachen Weg "durchgekommen".

Wow ... Respekt. Das bekommen nicht viele Anfänger so flott hin.  :thumb1: :super:  ... und danke für's Teilen.

Zitat

Nochmal, vielen herzlichen Dank! Ich glaube wir hören uns hier jetzt öfter :)

Uuiiii .... hat da einer Blut geleckt? ...  super ... immer gern.  :aetsch2::D

bearbeitet von BOfH_666
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...