evolution
Goto Top

Hunderte Ordner automatisch umbenennen und enthaltene Jahreszahl in Klammern setzen

Hallo,

ich habe mal eine Frage, ob es per,batch oder Shell möglich ist viele Ordner automatisch umzubenennen.

Der Aufbau ist folgendermaßen:

Ordner 1582
Ordner 1999
etc.

Die Ordner haben unterschiedliche Namen, haben aber immer eine Jahreszahl am Ende oder in der Mitte.
Jetzt hätte ich gerne, dass die Jahreszahl immer in Klammern steht.
Ist das möglich?

Danke im Voraus

Content-Key: 251722

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

Printed on: April 20, 2024 at 00:04 o'clock

Member: colinardo
colinardo Oct 12, 2014 updated at 16:12:39 (UTC)
Goto Top
Hallo umpalumpa,
z.B. mit Powershell ein Einzeiler ...
dir 'C:\DeinRootOrdner' -recurse | ?{$_.PSIsContainer -and $_.Name -match '\d{4}'} | rename-item -NewName {$_.Name -replace '(\d{4})','($1)'}

Noch zur Info: Die gängigen Rename-Programme wie
können das mit Regular-Expressions auch out-of-the-box

Grüße Uwe
Member: evolution
evolution Oct 12, 2014 at 15:31:58 (UTC)
Goto Top
Erst mal vielen Dank für die schnelle Antwort und die Vorschläge. Allerdings habe ich mich evtl. falsch ausgedrückt.

Am Ende soll nicht nur die Jahreszahl übrig bleiben, sondern nur in Klammern gesetzt werden:

Bsp:

Vorher: Antuigua vrk 2013 > Antuigua vrk (2013)
Vorher: Redmark 2011 vrk > Redmark (2011) vrk

Am liebsten wäre mir, die Jahreszahl irgendwie zu extrahieren (egal wo sie steht) und dann den Ordnernamen neu zusammenzusetzen. Damit man die Zahl immer an den Anfang oder das Ende stellen kann.

Danke
Member: colinardo
colinardo Oct 12, 2014, updated at Oct 13, 2014 at 07:19:02 (UTC)
Goto Top
Zitat von @evolution:.
Am Ende soll nicht nur die Jahreszahl übrig bleiben, sondern nur in Klammern gesetzt werden:
genau das gewünschte macht meine Zeile aber !! Du hast es bestimmt noch nicht ausprobiert face-wink
Am liebsten wäre mir, die Jahreszahl irgendwie zu extrahieren (egal wo sie steht) und dann den Ordnernamen neu
zusammenzusetzen. Damit man die Zahl immer an den Anfang oder das Ende stellen kann.
Auch kein Problem, geht damit ebenso...
z.B. die Jahreszahl immer ans Ende setzen:
dir 'C:\DeinRootOrdner' -recurse | ?{$_.PSIsContainer -and $_.Name -match '\d{4}'} | rename-item -NewName {$_.Name -replace '(.*?)(\d{4})(.*)','$1$3($2)'}
Mit der Regular Expression wird der Ordnername in 3 Teile gesplittet und im zweiten Replace-Parameter jeweils neu angeordnet, so dass die Jahreszahl immer am Ende steht. Die Dollarzeichen mit der Zahl dahinter entsprechen der Position der Klammerpaare im RegEx.

Und voila hast du alle Möglichkeiten face-smile
Member: evolution
evolution Oct 12, 2014 updated at 19:37:39 (UTC)
Goto Top
Also nochmal vielen Dank, aber ich bekomme immer eine Fehlermeldung:

Der Quell und der Zielpfad dürfen nicht identisch sein
Member: colinardo
colinardo Oct 12, 2014 updated at 19:40:24 (UTC)
Goto Top
Zitat von @evolution:

Also nochmal vielen Dank, aber ich bekomme immer eine Fehlermeldung:

Get-ChildItem : Es wurde kein Parameter gefunden, der dem Parameternamen "recruse" entspricht
Kopiere die Zeile mal richtig, das heißt -recurse ... nicht recruse face-big-smile. Und bedeutet alle Unterordner rekursiv durchlaufen. Wenn du das nicht benötigst kannst du den Parameter weglassen.
Member: evolution
evolution Oct 12, 2014 at 19:40:20 (UTC)
Goto Top
sorry.. hab es eingetippt und vertippt.. jetzt macht er es, aber ich bekomme trotzdem
jetzt die Fehlermeldung, dass der Quell und Zielpfad nicht identisch sein dürfen..

verstehen tu ich das nicht face-smile
Member: colinardo
Solution colinardo Oct 12, 2014, updated at Oct 13, 2014 at 18:12:21 (UTC)
Goto Top
Zitat von @evolution:

sorry.. hab es eingetippt und vertippt.. jetzt macht er es, aber ich bekomme trotzdem
jetzt die Fehlermeldung, dass der Quell und Zielpfad nicht identisch sein dürfen..

verstehen tu ich das nicht face-smile
dann hast du einen doppelten Ordnernamen mit der Umbenennung produziert.
Für diesen Fall musst du es dann so schreiben:
dir 'C:\DeinRootOrdner' -recurse | ?{$_.PSIsContainer -and $_.Name -match '\d{4}'} | rename-item -NewName {$_.Name -replace '^(.*?)(\d{4})(.*)$','$1$3($2)'} -ErrorAction SilentlyContinue
dann überspringt er doppelte Ordnernamen bei der Umbenennung.

Schönen Abend
Grüße Uwe
Member: evolution
evolution Oct 12, 2014 at 19:53:37 (UTC)
Goto Top
Super.. Vielen Dank, dass du dir die Zeit genommen hast! Hast mit sehr geholfen.
Schönen Abend auch dir..