在人事档案夹中,有关于由人员主管创建的员工辅导的文件。这些文件的命名约定总是应该像
Supervisorname.SXXEXX.NameOfIssue.doc
进一步细分:
因此示例名称为Bob Godfrey.S48E99.Issue With Blue.doc
- 但是,由于某些主管没有遵守规则,因此存在没有.
分隔符的文件,我们的文件看起来像
Bob Godfrey - S48E99 - Issue With Blue.doc
Bob Godfrey X S48E99 - Issue With Blue.doc
Bob Godfrey S48E99 - Issue With Blue.doc
为了规范化目的,(并且在我的过程中不要拉扯我的头发)我尝试使用下面的语法来抓住这些异常值并重命名它们(大约有300个),而这似乎是执行它应该,文件不会重命名。
我需要更改什么才能相应地重命名这些文件?
Get-ChildItem -Path R:\Personnel\ -Filter *.doc |
Rename-Item -NewName { $_.BaseName.Replace(" - ", ".") + $_.Extension } -Verbose
Get-ChildItem -Path R:\Personnel\ -Filter *.doc |
Rename-Item -NewName { $_.BaseName.Replace(" X ", ".") + $_.Extension } -Verbose
答案 0 :(得分:1)
使用正则表达式替换将匹配集中在文件名的规定/员工编号部分:
Rename-Item -NewName { $_.Name -replace ' (?:[-X] )?(S\d\dE\d\d)(?: [-X])? ', '.$1.' }
答案 1 :(得分:0)
$Pattern=[RegEx]'^([^-.]+?)(\.| | X | - )(S\d{2})\.*(E\d{2,3})(\.| - )([^\.]+)(\.doc)$'
$Replace='$1.$3.$4.$6$7'
GCI -Path R:\Personnel\ -Filter *.doc | Rename-Item -NewName { $_.Name -replace $Pattern,$Replace}
$Pattern
有7个小组
([^-.]+?)
neg.class,no - 或点至少一个char,lazy (\.| | X | - )
的分组或点或空格或x
或-
(S\d{2})
的组和2位数(可能后跟一个点)\.*
(E\d{2,3})
E和两位或三位数(\.| - )
分组为点或-
([^\.]+)
neg.class除了一个点至少有一个char (\.doc)
分组到$