Jump to content
Eledris

Powershell Dateien umbennenen mit variablen aus Tabelle

Recommended Posts

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

 

Edited by Eledris

Share this post


Link to post
Share on other sites
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.

Edited by BOfH_666

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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

Edited by BOfH_666

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Werbepartner:



×
×
  • Create New...