【发布时间】:2022-12-01 22:38:31
【问题描述】:
I wrote the script below to batch rename files with powershell. It is intended to remove dots (.) and every (-) that is followed by a number from the filenames. Example: text.10-1 becomes text101. However, I feel like there must be a way to do this in a line of code. Also, I wanted it to also enter a subdirectory and do it, how do I write it?
Get-ChildItem | ForEach{ $_ | Rename-Item -NewName "$($_.BaseName.Replace("-1",'1')+$_.Extension)" }
Get-ChildItem | ForEach{ $_ | Rename-Item -NewName "$($_.BaseName.Replace("-0",'0')+$_.Extension)" }
Get-ChildItem | ForEach{ $_ | Rename-Item -NewName "$($_.BaseName.Replace("-2",'2')+$_.Extension)" }
Get-ChildItem | ForEach{ $_ | Rename-Item -NewName "$($_.BaseName.Replace("-3",'3')+$_.Extension)" }
Get-ChildItem | ForEach{ $_ | Rename-Item -NewName "$($_.BaseName.Replace("-4",'4')+$_.Extension)" }
Get-ChildItem | ForEach{ $_ | Rename-Item -NewName "$($_.BaseName.Replace("-5",'5')+$_.Extension)" }
Get-ChildItem | ForEach{ $_ | Rename-Item -NewName "$($_.BaseName.Replace("-6",'6')+$_.Extension)" }
Get-ChildItem | ForEach{ $_ | Rename-Item -NewName "$($_.BaseName.Replace("-7",'7')+$_.Extension)" }
Get-ChildItem | ForEach{ $_ | Rename-Item -NewName "$($_.BaseName.Replace("-8",'8')+$_.Extension)" }
Get-ChildItem | ForEach{ $_ | Rename-Item -NewName "$($_.BaseName.Replace("-9",'9')+$_.Extension)" }```
Thanks
【问题讨论】: