darkzonesd
Goto Top

Unterordner Leerzeichen durch Unterstrich ersetzen

Guten Morgen zusammen,

ich möchte gerade in einem Verzeichnis unter Windows, die Namen von allen Ordnern ändern indem ich die Leerzeichen mit Unterstrichen ersetze, mein Skript funktioniert aber nicht face-sad

Kann mir jemand diesbezüglich helfen?

$Files = Get-ChildItem -Path "C:\Users\...\Desktop\testLeer"  
Copy-Item $Files.FullName -Destination C:\Users\...\Desktop\test
Set-Location -Path C:\Users\...\Desktop\test
Get-ChildItem -File | %{Rename-Item -NewName ( $_.Name -replace ' ','_' )}  

Vielen Dank!

Content-Key: 5500710084

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

Printed on: July 27, 2024 at 12:07 o'clock

Mitglied: 3063370895
Solution 3063370895 Jan 20, 2023 updated at 07:46:02 (UTC)
Goto Top
Moin,

Du möchtest alle Unterordner eines Verzeichnisses umbenennen? oder Dateien? oder beides?

Alle Unterordner in dem Ordner umbenennen:

$folder = "C:\users\xxx\Desktop\testLeer"  
Get-ChildItem -Path $folder -Directory | %{Rename-Item -Path $_.FullName -NewName ( $_.Name -replace ' ','_' )}  

Alle Unterordner UND deren Unterordner umbenennen:

$folder = "C:\users\xxx\Desktop\testLeer"  
Get-ChildItem -Path $folder -Directory -Recurse | %{Rename-Item -Path $_.FullName -NewName ( $_.Name -replace ' ','_' )}  

Alle Dateien in dem Ordner umbenennen:

$folder = "C:\users\xxx\Desktop\testLeer"  
Get-ChildItem -Path $folder -File | %{Rename-Item -Path $_.FullName -NewName ( $_.Name -replace ' ','_' )}  

Alle Dateien im Ordner UND Unterordner umbenennen:

$folder = "C:\users\xxx\Desktop\testLeer"  
Get-ChildItem -Path $folder -File -Recurse | %{Rename-Item -Path $_.FullName -NewName ( $_.Name -replace ' ','_' )}  

Alle Dateien UND Ordner im Ordner umbenennen:

$folder = "C:\users\xxx\Desktop\testLeer"  
Get-ChildItem -Path $folder | %{Rename-Item -Path $_.FullName -NewName ( $_.Name -replace ' ','_' )}  

Alle Dateien UND Ordner im Ordner UND Unterordner umbenennen:

$folder = "C:\users\xxx\Desktop\testLeer"  
Get-ChildItem -Path $folder -Recurse | %{Rename-Item -Path $_.FullName -NewName ( $_.Name -replace ' ','_' )}  
Member: DarkZoneSD
DarkZoneSD Jan 20, 2023 at 08:03:55 (UTC)
Goto Top
Super, hat funktioniert danke!

"Nur" all Unterordner neu benennen ;)
Mitglied: 5175293307
5175293307 Jan 20, 2023 updated at 09:02:41 (UTC)
Goto Top
Nur zur Info, die Varianten mit Unterordnern und Dateien werden dann fehlschlagen wenn einer der Oberordner und dann auch eine Datei oder ein Unterordner in diesem Ordner wegen Leerzeichen umbenannt wird. Der Grund, durch die Reihenfolge der Sortierung ändert sich schon der Pfad was dann zum Fehler führt weil der Ordner oberhalb ja inzwischen anders heißt.
Man sollte also zumindest noch eine umgekehrte Sortierung (sort-object) nach der Gesamtpfadlänge/Level vor dem Umbenennen dazwischen schalten.

Etwa so
$folder = "C:\users\xxx\Desktop\testLeer"  
Get-ChildItem -Path $folder -Directory -Recurse | sort {$_.Fullname.length} -Descending | Rename-Item -NewName {$_.Name -replace '\s+','_'}  

Gruß Wurstel