Mehrere Dateien umbenennen mit Dateiendung?
Ich möchte mehrere Dateien, es können auch hunderte sein umbenennen in irgendwas.htm
Die Dateien heissen datei1.zip.010 datei1.zip.011 datei1.zip.012 datei1.zip.013
und so weiter. Mit einer .bat Datei kann man bestimmte Dateiendungen umbenennen, aber nicht wenn alle Dateien verschiedene Endungen haben.
Kennt jemand eine Lösung unter WIN11?
Danke!
1 Antwort
aber nicht wenn alle Dateien verschiedene Endungen haben
doch.. natürlich geht das.
ren "dateiI1.zip.*" "*.*.html"
dafür gibt es die Joker (Wildcards * und ?)
- siehe: https://ss64.com/nt/ren.html
demo.cmd
::mal zum testen ein paar durchnummerierte Dateien erzeugen
for /l %%a in (1,1,10) do (echo: >"dateiIrgentwas.zip.%%a")
::diese in einem rutsch umbenennen...🤪
ren "dateiIrgentwas.zip.*" "*.*.html"
natürlich böd wenn au neben den Zahlen am Ende auch noch andere Dateien nach dem Muster existieren, welche unangetastet bleiben sollen.
Das könnte man mit einer Forschleife und etwas fiedeln auch in Batch lösen, aber dafür hab ich heute keinen Lust.
Windows hat mit Powershell ein viel mächtigeres Werkzeug als Cmd bieten könnte...
da geht das so...
#wieder ein paar DemoDateien basteln
1..10|%{New-Item -Name $('DemoFile1.zip.{0:D3}'-f $_) -ItemType File}
#und ein paar, welche wir in Ruhe lassen wollen
1..10|%{New-Item -Name $('DemoFile1.zip.{0}'-f $_) -ItemType File}
...und verarbeten...
Get-ChildItem 'DemoFile1.zip.*'| #ersmal alle mit irgendwas am Ende... das ist (in diesem Fall) nicht fein genug,
Where-Object {$_.Name -match '^.+\d{3}$'}| #darum davon nur die mit den 3! Ziffern per RegEx in einem "Where-object"-filter aussieben.
ForEach-Object {
Rename-Item $_ -NewName "$($_.Name).html" -whatif #...und ins neue Muster umbenennen
}
(-whatif ist zum probieren ohne Wirkung , zum Scharf machen entfernen!)
Wer will den Romane Schreiben....? das geht auch so:
gci 'DemoFile1.zip.*'|?{$_.Name -match '^.+\d{3}$'}|%{ren $_ -NewName "$($_.Name).html"}
natürlich kannst du auch Ziffern gegen Buchstaben tauschen oder sonst was:
#ein kleines Macro zum ersetzen von Zahlen durch Buchstaben😆
$NumberToLetter={ param($m) [char] ([int] [char] 'A' + [int] $m.Value) }
Get-ChildItem 'DemoFile1.zip.*'| Where-Object {$_.Name -match '^.+\d{3}$'}| ForEach-Object {
$NewExtension=[regex]::Replace($_.Extension, '\d',$NumberToLetter)
Rename-Item $_ -NewName "$($_.BaseName)$NewExtension)" -whatif
}
naja wieder kurz (aber kaum lesbar)
gci 'DemoFile1.zip.*'| ?{$_.Name -match '^.+\d{3}$'}|%{ $ne=[regex]::Replace($_.Extension, '\d',{ param($m) [char] ([int] [char] 'A' + [int] $m.Value) });Rename-Item $_ -NewName "$($_.BaseName)$ne"}
ergebnis
WhatIf: Ausführen des Vorgangs "Datei umbenennen" für das Ziel "Element: C:\Users\Erzesel Secure\Desktop\Neuer Ordner (4)\DemoFile1.zip.002 Ziel: C:\Users\Erzesel Secure\Desktop\Neuer Ordner (4)\DemoFile1.zip.AAC".
WhatIf: Ausführen des Vorgangs "Datei umbenennen" für das Ziel "Element: C:\Users\Erzesel Secure\Desktop\Neuer Ordner (4)\DemoFile1.zip.003 Ziel: C:\Users\Erzesel Secure\Desktop\Neuer Ordner (4)\DemoFile1.zip.AAD".