文件重命名键关闭第一个下划线到下一个句号



如何过滤第一个下划线和后面的句点

这是我目前所拥有的,但我收到的文件正在更改,在某些情况下,原始文件名有一个额外的下划线。我需要一种解释的方法。

Get-ChildItem "\MyFileServer*" | Rename-Item -NewName { ($_.Name -replace '(?<=^.{3}).{5}', '.').Replace(".vfmpclmadj.", ".sa.") } 

原始文件名

999_987895_888888_544P.44444.vfmpclmadj.000025001.20201216.175314

新文件名

999.44444.sa.000025001.20201216.175314

这样的东西应该可以工作。

('999_987895_888888_544P.44444.vfmpclmadj.000025001.20201216.175314' -replace '_.+?(?=.)').Replace(".vfmpclmadj.", ".sa.")

它只是寻找一个下划线加上任何字符,最多一个句点。你可以让它更严格,但对于这个例子,它是不需要的。类似这样的东西也可以,但只适用于第一个下划线。前者可能会影响字符串后面的其他下划线。

('999_987895_888888_544P.44444.vfmpclmadj.000025001.20201216.175314' -replace '(?<=^[^_]+)_.+?(?=.)').Replace(".vfmpclmadj.", ".sa.")

相关内容

最新更新