【发布时间】:2019-05-28 19:26:56
【问题描述】:
我正在为 SharePoint 迁移清理文件共享,并且我正在编写一个脚本来删除或替换文件名中不需要的字符。我正在努力删除多个连续的时期(文件..example.txt 作为我正在处理的示例)。
我能够使用下面的简单替换脚本来处理所有其他令人反感的字符,但是在尝试替换双句点错误时脚本失败了。
dir -recurse | rename-item -NewName {$_.name -replace ".." , ""}
我希望名为 file..example.txt 的文件变成 fileexample.txt,但没有任何变化。
【问题讨论】:
-
-replace 使用正则表达式,句点是元字符。你想要的是
$_.name -replace "\.+", ".",它将用一个替换任何一组句点。前任。"hello..this .....is ... me." -replace "\.+", "."会给hello.this .is . me. -
同意@Matt 的替代正则表达式是
Get-ChildItem -Recurse | Rename-Item -NewName {$_.name -replace '\.+(?=\.)'}它不需要替换字符串,因为它会删除除最后一个之外的所有后续点作为lookahead
标签: powershell