我正在编写一个快速的PowerShell脚本来替换除最后一个实例之外的所有句点。 EG:
hello. this. is a file.name.doc
→hello this is a filename.doc
到目前为止,我从另一篇文章中得到了这个正则表达式,但它不适用于PowerShell:
\.(?=[^.]*\.)
根据http://redpeople.org,它只匹配句点的第一次出现。
编辑: 基本上我需要应用此匹配并替换为具有子目录的目录。到目前为止,我有这个:
Get-ChildItem -Filter "*.*" | ForEach {
$_.BaseName.Replace('.','') + $_.Extension
}
但它实际上并没有取代这些项目,我认为它不是递归的。
我尝试了一些变化:
Get-Item -Filter "*.*" -Recurse |
Rename-Item -NewName {$_.BaseName.Replace(".","")}
但我收到错误消息
源和目标路径必须不同
答案 0 :(得分:0)
排除在重命名的基本名称中没有句点的文件:
Get-ChildItem -File -Recurse | Where-Object { $_.BaseName -like '*.*' } |
Rename-Item -NewName {$_.BaseName.Replace('.', '') + $_.Extension}