kreuzberger
Goto Top

PowerShell oder Batch - Rename Ordner

Tach ihr Digitalfreunde,

ok, man könnte mich dreist oder faul nennen. Aber mir kommt einfach keine Idee wie ich es lösen könnte.

Ich will Ordner umbenennen, die sich Listenweise in Unterordnern befinden.

Die Ordner lauten:

„Name - Vorname - (Jahreszahl)“

Die Jahreszahl ist immer 4 Stellen und in Klammern.

Davon befinden sich (unterschiedlich) viele in einem Unterordner.

Dabei sollte nach dem Umbenennen herauskommen:

„NAME - Jahreszahl - Vorname“

Wenn ich das dann umbenannt habe kann ich daraus mit vorhandenen PS-Scripten weiterarbeiten.
also AD-User anlegen etc..............


Hat da Jemand zufällig eine Idee oder eine Lösung?

Danke im Voraus


Kreuzberger

Content-ID: 2079808457

Url: https://administrator.de/forum/powershell-oder-batch-rename-ordner-2079808457.html

Ausgedruckt am: 13.04.2025 um 19:04 Uhr

1915348599
1915348599 06.03.2022, aktualisiert am 07.03.2022 um 06:52:20 Uhr
Goto Top
Rename Ordner
Ich will Ordner umbenennen
Entscheide dich mal 😆

1
Get-Childitem "d:\root" -Directory -Recurse | ?{$_.Name -match '([^-]+) - ([^-]+) - \((\d{4})\)'} | rename-item -newname {"$($matches[1].toUpper()) - $($matches[3]) - $($matches[2])"} -verbose  
https://tio.run/##XYw9i8JAEIZ7f8UQAu4iE/wsrCwUtPEKwcpE2UsGEswmYXbVk5jfHj ...
kreuzberger
Lösung kreuzberger 08.03.2022 um 12:09:08 Uhr
Goto Top
soooooo, also nun komme ich mal weiter zum Antworten.

Herzlichen Dank an Petty, leider hatte das warum auch immer erst mal nicht geklappt.
eine nicht ganz perfekte Lösung hab ich aber mir dann doch zusammengefrickelt. Nicht schön, nicht perfekt, aber soweit geht es erst mal:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$ARBEITSPFAD = Read-Host -Prompt "Bitte geben Sie Ihren Pfad mit Copy & Paste ein!"  
$ARBEITSPFAD


$Ordnerliste = Get-ChildItem -Directory -Path $ARBEITSPFAD | select Name
write-host ""  
write-host ""  
write-host ""  
write-host ""  
write-host $Ordnerliste

foreach($u in $Ordnerliste) {

write-host "ALT->     ",$u.name  
 
# JAHR
$JAHR = $u.name.Substring($u.name.IndexOf("("),$u.name.Length-$u.name.IndexOf("("))   
$JAHR = $JAHR.Substring(1,4)
write-host "JAHR->    ",$JAHR  

# NAME 
$NAME = ($u.name).Substring(0,$u.name.IndexOf(" - "))  
write-host "NAME->    ",$NAME  

# VORNAME
$VORNAME = ($u.name).Substring(0,$u.name.IndexOf(" ("))  
$VORNAME = $VORNAME.Replace($NAME,"")  
$VORNAME = $VORNAME.Replace(" - ","")  
write-host "VORNAME-> ",$VORNAME  

$OrdnerNEU = $NAME + " - " + $JAHR + " - " + $VORNAME  
write-host "OrdnerNEU-> ",$OrdnerNEU   

# RENAME
$ARBEITSPFAD_NEU = $ARBEITSPFAD + "\" + $u.name  
Rename-Item -Literalpath $ARBEITSPFAD_NEU -NewName $OrdnerNEU
          
}

Danke

Kreuzberger
1915348599
1915348599 08.03.2022 um 12:11:58 Uhr
Goto Top
leider hatte das warum auch immer erst mal nicht geklappt.
Das es geht siehst du ja in der Online-Demo , ansonsten hast du uns in der Formatierung der Namen etwas verschwiegen.
kreuzberger
kreuzberger 08.03.2022 um 12:18:17 Uhr
Goto Top
Hi Petty,
ich schliesse nicht aus, dass ich mich bei deinem Code dusslich angestellt hatte.

In den Vorhandenen Ordnern (Ausgangssituation) gibt es durchaus einige Abweichungen, die ich aber nicht extra abfangen wollte, denn das führt zu weit.
face-wink
Danke
Kreuzberger