Dateinamen mit Powershell umbenennen ???
Hallo,
Ich benötige ein Script mit dem ich eine MP3 Sammlung umbenennen kann. Die Dateien lauten im Ursprung alle so:
012-bakermat_-_one_day_(vandaag)_(radio_edit)
013-alle_farben_feat_graham_-_she_moves_(far_away)
usw.
Am Ende sollen die Dateien wie folgt aussehen:
Bakermat - One Day (Vandaag) (Radio Edit)
Alle Farben (Feat. Graham) - She Moves (Far Away)
Es sollen also alle unterstriche entfernt werden, die Ziffern vorne sollen weg, Der featuring Interpret soll in Klammern sein und jedes Wort soll mit einem Großbuchstaben anfangen.
bislang habe ich folgendes Script erstellt und damit die folgende Lösung bereits hinbekommen.
Script:
Get-ChildItem "D:\MUSIK\*.mp3" | Rename-Item -NewName {$_.Name -replace '_' , ' '}
Get-ChildItem "D:\MUSIK\*.mp3" | Rename-Item -NewName {$_.Name -replace ' and ' , ' & '}
Get-ChildItem "D:\MUSIK\*.mp3" | Rename-Item -NewName {$_.Name -replace 'feat' , '(Feat.'}
Get-ChildItem "D:\MUSIK\*(Feat.*.mp3" | Rename-Item -NewName {$_.Name -replace ' - ' , ') - '}
Get-ChildItem "D:\MUSIK\*.mp3" | Rename-Item -NewName {$_.Name.Substring(4)}
Ergebnis:
bakermat - one day (vandaag) (radio edit)
alle farben (Feat. graham) - she moves (far away)
Mir fehlt also nur noch die der Großbuchstabe am Anfang jedes Wortes. Kann mir da jemand Unterstützung geben und / oder auch evtl das Script verfeinern / anpassen / professioneller machen ??? Bin blutiger Anfänger was powershell anbelangt.
DANK im voraus.
Gruß lexura
Ich benötige ein Script mit dem ich eine MP3 Sammlung umbenennen kann. Die Dateien lauten im Ursprung alle so:
012-bakermat_-_one_day_(vandaag)_(radio_edit)
013-alle_farben_feat_graham_-_she_moves_(far_away)
usw.
Am Ende sollen die Dateien wie folgt aussehen:
Bakermat - One Day (Vandaag) (Radio Edit)
Alle Farben (Feat. Graham) - She Moves (Far Away)
Es sollen also alle unterstriche entfernt werden, die Ziffern vorne sollen weg, Der featuring Interpret soll in Klammern sein und jedes Wort soll mit einem Großbuchstaben anfangen.
bislang habe ich folgendes Script erstellt und damit die folgende Lösung bereits hinbekommen.
Script:
Get-ChildItem "D:\MUSIK\*.mp3" | Rename-Item -NewName {$_.Name -replace '_' , ' '}
Get-ChildItem "D:\MUSIK\*.mp3" | Rename-Item -NewName {$_.Name -replace ' and ' , ' & '}
Get-ChildItem "D:\MUSIK\*.mp3" | Rename-Item -NewName {$_.Name -replace 'feat' , '(Feat.'}
Get-ChildItem "D:\MUSIK\*(Feat.*.mp3" | Rename-Item -NewName {$_.Name -replace ' - ' , ') - '}
Get-ChildItem "D:\MUSIK\*.mp3" | Rename-Item -NewName {$_.Name.Substring(4)}
Ergebnis:
bakermat - one day (vandaag) (radio edit)
alle farben (Feat. graham) - she moves (far away)
Mir fehlt also nur noch die der Großbuchstabe am Anfang jedes Wortes. Kann mir da jemand Unterstützung geben und / oder auch evtl das Script verfeinern / anpassen / professioneller machen ??? Bin blutiger Anfänger was powershell anbelangt.
DANK im voraus.
Gruß lexura
Please also mark the comments that contributed to the solution of the article
Content-Key: 241914
Url: https://administrator.de/contentid/241914
Printed on: April 26, 2024 at 22:04 o'clock
2 Comments
Latest comment
Hallo lexura,
probier das mal:
Grüße Uwe
probier das mal:
$files = dir "D:\Musik\*.mp3"
foreach($file in $files){
# ersetzen von underscores, 'and' und Zahlen am Anfang
$newname = ($file.Basename.replace("_"," ").replace(' and ','&') -replace '^\d*-?','')
# große Anfangsbuchstaben
$newname = [regex]::Replace($newname,'\b([a-z])\w+',{param($m) ($m.Groups[1].Value.toUpper()+$m.Value.Substring(1))})
# wenn 'feat' vorkommt ...
if($newname -match '\bfeat'){
$newname = $newname -Replace '(feat)(.*?) -','($1.$2) -'
}
$newname = $newname + $file.Extension
write-host $file.Name" ==> " -NoNewline -ForegroundColor Red; write-host $newname -ForegroundColor Green
rename-item $file.FullName $newname
}