buliwyf
Goto Top

Mit Powershell recursiv Unterordner und Dateien eine Namenserweiterung setzen?

Hallo Freunde,

wieder einmal bräuchte ich Unterstützung.

Vor kurzem hatte ich das Thema "ordner suchen und umbenennen"
Die Lösung von hier hat prima funktioniert.
Get-ChildItem "G:" -Directory -Recurse -Filter "Fach1" | rename-item -NewName "1.1 Donnerstag" -Force    


Wie sieht es aber aus wenn ich ab einem gewissen Ordner alles was darunter kommt, -recursiv, den Datei Namen um einen Zusatz erweitern möchte? (in dem Fall zb. _0815)
Egal ob Ordner oder Datei ?

Ist Zustand:
zb. Ober Ordner heißt: Franz.
Darunter kommen 2 Unterordner zb. Name1 und Name2
Darunter Ordner zb. mit dem Namen: Wissenswertes
Darunter dann zb pdf Dateien: Geburtsurkunde.pdf

Soll Zustand:

Ober Ordner heißt: Franz_0815
Darunter 2 Unterordner : Name1_0815 und Name_0815
Darunter Ordner mit dem Namen: Wissenswertes_0815
Darunter dann die pdf Dateie(n): Geburtsurkunde_0815.pdf


Ist das möglich?

Vielen Dank face-smile

Lg Stefan

Content-ID: 7938371385

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

Ausgedruckt am: 24.11.2024 um 22:11 Uhr

7907292512
Lösung 7907292512 24.07.2023 aktualisiert um 15:15:27 Uhr
Goto Top
Moin.
$suffix = "_0815"  
$folder = "D:\quelle"  
Get-ChildItem $folder -Recurse | sort {$_.FullName.length} -Descending | rename-item -NewName {@{$true=$_.Name + $suffix;$false=$_.Basename + $suffix + $_.Extension}[$_.PSIsContainer]} -Force
Gruß siddius
buliwyf
buliwyf 24.07.2023 um 13:37:44 Uhr
Goto Top
Wooow,

Wahnsinnig schnell und läuft.
Super vielen Dank dafür !!!

LG Stefan
buliwyf
buliwyf 24.07.2023 um 14:08:00 Uhr
Goto Top
Da war ich wohl etwas vorschnell face-wink
In den unterordner gibt es einen Fehler.

zb. unter dem Unterordner : Name1 den das script perfekt umbenennt in Name1_0815
gibt es Unterordner die zb so aussehen: "2.1 Erfahrungen"
Nun benennt das script den Ordner nicht in "2.1 Erfahrungen:0815" um
sondern leider in : "2.1 Erfahrungen:0815. Erfahrungen"

Was so natuerlich nicht sein soll.

LG Stefan
7907292512
Lösung 7907292512 24.07.2023 aktualisiert um 14:18:18 Uhr
Goto Top
Sorry ,ist korrigiert, das kam wegen dem Punkt im Namen.
buliwyf
buliwyf 24.07.2023 um 14:26:43 Uhr
Goto Top
Nochmals, Wie schnell Du mit sowas bist.
Einfach Wahnsin face-smile

Jetzt scheint es 100 Pro zu funktionieren.

Vielen vielen Dank !

LG Stefan
7907292512
7907292512 24.07.2023 aktualisiert um 14:31:35 Uhr
Goto Top
Keine Ursache. You're welcome 🖖
buliwyf
buliwyf 24.07.2023 um 14:59:50 Uhr
Goto Top
Kann man da auch ein force setzen?
7907292512
7907292512 24.07.2023 aktualisiert um 15:23:13 Uhr
Goto Top
Klar s.o. Berechtigungen kann das natürlich nicht übergehen da musst du schon beim Ausführen mit entsprechenden Berechtigungen hantieren.
buliwyf
buliwyf 25.07.2023 um 10:06:21 Uhr
Goto Top
Moin Siddius,

nun wirds etwas anspruchvoller face-wink

Kann man Ordnername in einem Verzeichnis mit einer zb. csv Datei abgleichen, und wenn übereinstimmend einen
Namenszusatz an den vorhandenen Ordner hängen?

Beispiel:
Im Verzeichnis D:\ gibt es zb unter anderem einen Ordner "Sascha, Peter ",...
In der liste.csv Speicherort ebenfalls D:\, gibt es dann ebenfalls in Spalte "B" den Namen "Sascha, Peter"
In Spalte A steht der Zusatz "736"

Nun soll das Script, prüfen gibt es den Namen in dem Verzeichnis D:\ übereinstimmend mit der liste.csv und wenn ja,
dann den Ordner im Verzeichnis D:\ umbenennen in "Sascha, Peter_736"
Also die Spalte "A" aus der csv mit einem Unterstrich davor im Namen anhängen?

Das ist bestimmt nicht ganz so einfach?

LG Stefan
7907292512
7907292512 25.07.2023 aktualisiert um 10:29:57 Uhr
Goto Top
Das ist bestimmt nicht ganz so einfach?
Pillepalle...
CSV Aufbau
"suffix";"foldername"  
"736";"Sascha, Peter"  
Code
$folder = "D:\quelle"  
$csvpath = "d:\prefixes.csv"  
$csv = Import-Csv $csvpath -Delimiter ";"  
foreach($itm in Get-ChildItem $folder -Recurse -Directory | sort {$_.FullName.length} -Descending){
    $suffix = $csv | ?{$_.foldername -eq $itm.Name} | select -ExpandProperty suffix
    if ($suffix){
        rename-item $itm.Fullname -NewName "$($itm.Name)_$suffix" -Force  
    }
}

Wird wohl wieder so'n never ending Beitrag, wenn die Leute immer erst hinterher nachdenken ... 😵‍💫

-edit- Kleinigkeit korrigiert
buliwyf
buliwyf 25.07.2023 um 10:30:05 Uhr
Goto Top
muss hier kein Abschluss rein? Oder die direkte Angabe der csv Datei? namentlich?
7907292512
7907292512 25.07.2023 um 10:30:35 Uhr
Goto Top
Zitat von @buliwyf:

muss hier kein Abschluss rein? Oder die direkte Angabe der csv Datei? namentlich?

????
buliwyf
buliwyf 25.07.2023 aktualisiert um 10:37:52 Uhr
Goto Top
Habs mal mit
'D:\Quelle\prefixes.csv'  
ergänzt.

Folgendes kommt als Ergebnis:

zb. Sascha, Peter_@{suffix=736; foldername=Sascha, Peter}

P.S. ohne Abschluss "Hochkomma", ist alles rot , nicht ausführbar.

Ach, habs gesehen, hat wohl nicht richtig kopiert...
Dennoch bleibt das ergebnis gleich.
7907292512
7907292512 25.07.2023 aktualisiert um 10:36:31 Uhr
Goto Top
Lies mal meinen Post nochmal, du verwendest noch die alte Variante hatte diese zwischenzeitlich korrigiert ...
buliwyf
buliwyf 25.07.2023 um 10:40:45 Uhr
Goto Top
face-smile

Hast Recht, lesen bildet bekanntlich face-smile

Funktioniert Super !

Wie machst du das? Ich würde an sowas Tage sitzen ehe ich mir sowas zusammen gestückelt hätte?
Bist du beruflich progger?

LG Stefan
7907292512
7907292512 25.07.2023 aktualisiert um 10:45:05 Uhr
Goto Top
Ich lese eigentlich nur die Manuals 😁, der Rest ist üben üben üben, irgendwann schreibst du das nur noch wie eine andere Sprache so runter, das Gerüst bildet sich vorher schon im Kopf.
Wenn man einmal objektorientierte Programmiersprachen gelernt hat, ist jede andere Sprache nur noch wie Vokabeln lernen.
buliwyf
buliwyf 25.07.2023 um 11:05:46 Uhr
Goto Top
Ich ziehe ja wirklich den Hut vor soetwas.
Ich weiße im Grunde was ich will, aber die Syntax ist das Problem, da hilft wirklich nur üben üben üben,
aber ersteinmal diie Zeit dafür aufbringen.

Ich danke dir auf jedenfall sehr für deine Hilfe !

Vielen Dank face-smile