Batch Rename - Sonderzeichen aus Ordnername entfernen
Hi zusammen,
nach langem Googlen auf unterschiedlichsten Seiten und Foren komme ich einfach nicht mehr weiter.
Ich habe einen Hauptordner mit vielen Unterordnern, diese Unterordner sind alle unterschiedlich vom Namen und Inhalt, haben kein eindeutiges Muster.
Jetzt geht es darum, die Leerzeichen, Komma, Punkte, Klammern, Umlaute äöü etc. aus den Unterordner-Namen zu entfernen.
Ersetzen mit einem Bindestrich (wenn Leerzeichen) bzw. komplett entfernen (bei anderen Sonderzeichen).
Umlaute wie gewohnt mit ae, oe, ue ersetzen.
FolderX\Name Unternehmen GmbH\DateiXYZ.jpg
FolderX\Unternehmen & Co. KG\Logo123.jpg
FolderX\Einzelunternehmen WünschDirWas\Flyer.pdf
Das wäre mal so das größte Problem :D
Sitze echt schon seit Tagen und komme leider auf keinen grünen Zweig...
Freue mich über jede Hilfe! Vielen lieben Dank!
LG drlx28
nach langem Googlen auf unterschiedlichsten Seiten und Foren komme ich einfach nicht mehr weiter.
Ich habe einen Hauptordner mit vielen Unterordnern, diese Unterordner sind alle unterschiedlich vom Namen und Inhalt, haben kein eindeutiges Muster.
Jetzt geht es darum, die Leerzeichen, Komma, Punkte, Klammern, Umlaute äöü etc. aus den Unterordner-Namen zu entfernen.
Ersetzen mit einem Bindestrich (wenn Leerzeichen) bzw. komplett entfernen (bei anderen Sonderzeichen).
Umlaute wie gewohnt mit ae, oe, ue ersetzen.
FolderX\Name Unternehmen GmbH\DateiXYZ.jpg
FolderX\Unternehmen & Co. KG\Logo123.jpg
FolderX\Einzelunternehmen WünschDirWas\Flyer.pdf
Das wäre mal so das größte Problem :D
Sitze echt schon seit Tagen und komme leider auf keinen grünen Zweig...
Freue mich über jede Hilfe! Vielen lieben Dank!
LG drlx28
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1161937559
Url: https://administrator.de/forum/batch-rename-sonderzeichen-aus-ordnername-entfernen-1161937559.html
Ausgedruckt am: 09.01.2025 um 08:01 Uhr
3 Kommentare
Neuester Kommentar
Zitat von @drlx28:
Vielleicht doch das falsche Tool gewählt?
Jetzt geht es darum, die Leerzeichen, Komma, Punkte, Klammern, Umlaute äöü etc. aus den Unterordner-Namen zu entfernen.
Ersetzen mit einem Bindestrich (wenn Leerzeichen) bzw. komplett entfernen (bei anderen Sonderzeichen).
Umlaute wie gewohnt mit ae, oe, ue ersetzen.
Ersetzen mit einem Bindestrich (wenn Leerzeichen) bzw. komplett entfernen (bei anderen Sonderzeichen).
Umlaute wie gewohnt mit ae, oe, ue ersetzen.
Als Denkanstoß:
1
Get-ChildItem *.txt | Rename-Item -NewName { $_.Name -replace '#%&','_' }
Moin,
Batch ist definitiv die falsche Wahl -> Powershell (hier Unterstriche erlaubt)
Nach dem umbenennen erstellt er dir auf deinem Desktop eine Renamed.Csv, so besteht zumindest noch die Möglichkeit das Ganze wieder Rückgängig zu machen - testen solltest du das Ganze vorher aber trotzdem erstmal.
Gruß Thomas
Zitat von @drlx28:
Ersetzen mit einem Bindestrich (wenn Leerzeichen) bzw. komplett entfernen (bei anderen Sonderzeichen).
Umlaute wie gewohnt mit ae, oe, ue ersetzen.
sind Unterstriche für dich Sonderzeichen oder erlaubt?Ersetzen mit einem Bindestrich (wenn Leerzeichen) bzw. komplett entfernen (bei anderen Sonderzeichen).
Umlaute wie gewohnt mit ae, oe, ue ersetzen.
Batch ist definitiv die falsche Wahl -> Powershell (hier Unterstriche erlaubt)
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
39
40
41
42
43
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
39
40
41
42
43
# Quellordner
$Source = "C:\Test"
# Zeichen ersetzen
$Chars = @{
'ä' = 'ae'
'ö' = 'oe'
'ü' = 'ue'
'ß' = 'ss'
' ' = '-'
}
# Regex-Replacefunktion
$Replace = {
Param($m)
# Falls Ä/Ö/Ü = Großbuchstabe, A/O/U ebenfalls groß
@{$true='{0}e' -f $Chars.($m.Value).Substring(0,1).ToUpper() ; $false=$Chars.($m.Value)}[ [char]::IsUpper($m.Value) ]
}
# Alle Ordner und Unterordner auflisten, die entsprechende Zeichen enthalten
$dirs = Get-ChildItem $Source -Directory -Recurse | Where-Object {$_.Name -Match '[^a-zA-Z0-9\-_]'}
# Ordner sortieren (tiefste Ordner zuerst behandeln)
$dirs = $dirs | Sort -descending -property {$_.Fullname.length}
# Für jeden Ordner...
$Renamed = Foreach ($dir in $dirs) {
# Objekt mit folgenden Eigenschaften erstellen...
[pscustomobject]@{
# Alter Dateiname
Oldname = $dir.Name
# Datei umbenennen und neuen Dateipfad ausgeben
NewPath = (Rename-Item -PassThru -Path $dir.fullname -NewName ([regex]::Replace($dir.Name,'(?i)[äöüß ]',$Replace) -Replace '[^a-zA-Z0-9\-_]')).Fullname
}
}
# Umbenannte Dateien als CSV-Liste Exportieren
$Renamed | Export-Csv -Delimiter ';' -NoTypeInformation "$Home\Desktop\Renamed.csv"
Gruß Thomas