Da das hier das Programmieren-Unterforum ist, bin ich mal so frei....
Korben2206 schrieb:
PowerShell:
Get-ChildItem $path -Filter *.pdf | % { Move-Item $_.FullName $_.FullName.Replace('OE_2202','OE_2203') }
... und stelle heraus, daß man das so NICHT machen sollte. Damit fummelt man nämlich am gesamten Pfad herum, nicht nur am Dateinamen.
Sinngemäß besser - Achtung, nicht getestet, selbst nochmal drüberschauen:
PowerShell:
foreach($file in (Get-Childitem -Path /Wo/Die/Dateien/Liegen -Recurse -File -Filter '*OE_2202_*'))
{
$newName = $file.Basename.Replace('OE_2202_','OE_2203_')
$newExt = $file.Extension
Rename-Item -Path $file.Fullname -Newname ("${newName}${newExt}")
}
wobei an dieser Stelle auf "Ziel existiert" Tests verzichtet wurde.
1. Get-Childitem sammelt exakt die Dateien zusammen, um die es geht (ggfs. braucht man kein -Recurse, wenn die alle im selben Ordner liegen)
2. In der Schleife wird dann der gesuchte Text (nur) im Namen der Datei ersetzt
3. Danach wird die alte Datei umbenannt in den neuen Namen
4. Die Erweiterung wird gesondert behandelt - sicherheitshalber, für den unwahrscheinlichen Fall, daß da unser gesuchter Text ebenfalls enthalten ist und bei Windows ist es nicht immer klar, was da unter "Erweiterung" fällt (ab erstem Punkt / ab letztem)
5. Rename-Item sollte von Haus aus nichts überschreiben, aber eine zusätzliche Prüfung mit Test-Path kann trotzdem nicht schaden.