重命名文件以符合标准

Rename Files To Fit Standard

在人事文件夹中,有关于由人事主管创建的员工辅导文件。这些文件的命名约定 ALWAYS 应该像

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

使用正则表达式替换将您的匹配集中在文件名的 stipulation/employee 数字部分:

Rename-Item -NewName { $_.Name -replace ' (?:[-X] )?(S\d\dE\d\d)(?: [-X])? ', '..' }
$Pattern=[RegEx]'^([^-.]+?)(\.| | X | - )(S\d{2})\.*(E\d{2,3})(\.| - )([^\.]+)(\.doc)$'
$Replace='...'
GCI -Path R:\Personnel\ -Filter *.doc | Rename-Item -NewName { $_.Name -replace $Pattern,$Replace}

$Pattern有7组

  1. 主管组 ([^-.]+?) neg.class,不 - 或至少一个字符,惰性
  2. 分隔符组 (\.| | X | - ) 点或 space 或 x-
  3. 规定编号组 (S\d{2}) S 和 2 位数字(可能后跟一个点)\.*
  4. 集团员工编号(E\d{2,3})E和两位或三位数字
  5. 组分隔符 (\.| - ) 点或 -
  6. 组问题 ([^\.]+) neg.class 除点外的所有内容至少一个字符
  7. 将锚定在行尾的 (\.doc) 分组 $