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-ID: 251722

Url: https://administrator.de/forum/hunderte-ordner-automatisch-umbenennen-und-enthaltene-jahreszahl-in-klammern-setzen-251722.html

Ausgedruckt am: 23.12.2024 um 01:12 Uhr

colinardo
colinardo 12.10.2014 aktualisiert um 18:12:39 Uhr
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
evolution
evolution 12.10.2014 um 17:31:58 Uhr
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
colinardo
colinardo 12.10.2014, aktualisiert am 13.10.2014 um 09:19:02 Uhr
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
evolution
evolution 12.10.2014 aktualisiert um 21:37:39 Uhr
Goto Top
Also nochmal vielen Dank, aber ich bekomme immer eine Fehlermeldung:

Der Quell und der Zielpfad dürfen nicht identisch sein
colinardo
colinardo 12.10.2014 aktualisiert um 21:40:24 Uhr
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.
evolution
evolution 12.10.2014 um 21:40:20 Uhr
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
colinardo
Lösung colinardo 12.10.2014, aktualisiert am 13.10.2014 um 20:12:21 Uhr
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
evolution
evolution 12.10.2014 um 21:53:37 Uhr
Goto Top
Super.. Vielen Dank, dass du dir die Zeit genommen hast! Hast mit sehr geholfen.
Schönen Abend auch dir..