如何解决通过将字符串从文件名的后面移到前面来重命名文件名
我正在尝试通过将字符串从文件名的后面移到前面来重命名文件名:
下午-Prebills_10Aug20_Project _ 3359122596 H至:
3359122596下午-Prebills_10Aug20 _
我正在尝试使用此脚本,然后删除“项目”,但无法使其正常工作:
Get-ChildItem *.pdf | Rename-Item -NewName {
$_.Name -replace '(Project\d{*}) - (.*?)\.pdf$','$1 -
$2.pdf' } -WhatIf
解决方法
将此修改为您的代码:
Clear-Host
$FName = "PM - Prebills_10Aug20_Project_3359122596 H"
#-------- Start Here -------
$Parts = $FName.Split("_")
$FName = $Parts[3] + " " + $Parts[0] + "_" + $Parts[1]
#-------- End Here -----
$FName
结果:3359122596下午-Prebills_10Aug20
它取消尾随的下划线,如果需要可以将其重新添加。您也可以轻松地删除开票前和日期之间的下划线,并用空格代替。
HTH
,我会这样做:
foreach($file in (Get-ChildItem *.pdf )){
$temp = $file -split '_'
$newname= $temp[3] + " " + $temp[1] + "_" + $temp[2] + "_"
Rename-item "$file" -NewName "$newname"
}
,
这有效。我不知道该模式的通用性。查看https://regex101.com,以试用正则表达式。
Get-ChildItem *.pdf |
Rename-Item -NewName { $_.Name -replace '(.*)Project _ (\d{10} H)','$2 $1' } -WhatIf
What if: Performing the operation "Rename File" on target
"Item: C:\users\admin\PM - Prebills_10Aug20_Project _ 3359122596 H.pdf
Destination: C:\users\admin\3359122596 H PM - Prebills_10Aug20_.pdf".
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。