Ich habe hunderttausende Dateien in ~ 40 Ordnern (diese Unterordner befinden sich in einem gleichen Super-Ordner, den ich "Test" nennen werde). Ich habe versucht, Powershell zu verwenden, um eine Syntax zu ersetzen, die im Ordnernamen aber auch in den Dateinamen gefunden wird.Batch-Datei und Ordner umbenennen in Windows Powershell
Grundsätzlich meine Ordner und Dateien enthalten die gleiche Zeichenfolge „PXXXX_0“, die ich Batch will umbenennen in „PXXXX_“
Hier ist der Code, den ich verwenden, um die Dateien zuerst & Ordner von Interesse Karte
cd C:\test
Get-ChildItem -Filter "*PXXXX_0*" -Recurse | Rename-Item -NewName {$_.name -replace 'PXXXX_0', 'PXXXX_'} -whatif
Das gibt mir die richtigen Dateien und in der Vorschau Aktion (zB
What if: Performing operation "Rename File" on Target "Item: C:\test\PXXXX_053\PXXXX_053_558.jpg Destination C:\test\PXXXX_053\PXXXX_53_558.jpg
scheint also diese zu arbeiten, aber nur auf die Dateien in den Ordnern, die ich auch umbenennen möchte.
Nun, wenn ich den Code starten, ohne -whatif es das scheint nur die Ordnernamen umbenennen werden, die Dateien nicht ...
ich ziemlich sicher, dass ich etwas verpasst haben, aber da ich bin nicht wirklich vertraut mit dieser Sprache Ich kämpfe um die Lösung. Ich benutze Powershell v1.0
Danke für jede Hilfe.
Beste
Wenn der Ordner umbenannt wird, sind die Dateipfade innerhalb des Ordners vermutlich falsch, da der Ordner unter diesem Namen nicht mehr existiert. Versuchen Sie zuerst, die Dateien umzubenennen, indem Sie '.. -Recurse | where-object {-not $ _. PsIsContainer} | Rename-Item ..'und dann wiederholen, um die Ordner umzubenennen, vielleicht? – TessellatingHeckler
Danke, es hat wie ein Zauber funktioniert! – Rhiz