按照相同的命名约定一次在多个文件名中添加字符[关闭]

问题描述 投票:0回答:1

我需要重命名一堆遵循以下约定的文件,来自:

姓氏_名字_公司_年月_合同类型.pdf

至:

姓_名_公司_年月_Contractype.pdf

我添加的日期始终是该月的第一天,因此我需要添加的字符是:“-01”

非常感谢您的帮助!

我尝试选择文件并使用F2,虽然它添加了我想要的字符,但它也将每个文件重命名为相同,这不是我需要的。

我还发现了与我有相同需求的结果,但他们的文件有固定的字符长度,而我没有,根据名称、公司和合同,长度会有所不同。

windows bash powershell batch-file
1个回答
0
投票

在 PowerShell 中您可以执行以下操作:

$fileLocation = 'C:\path\to\documents'

# find all pdf files in the folder
Get-ChildItem -LiteralPath $fileLocation -Filter *.pdf |ForEach-Object {
  # use the match operator to describe the filename and capture two groups:
  #   1: `LastName_FirstName_Company_Year-Month`
  #   2: `_Contractype`
  if ($_.BaseName -match '^([^_]+_[^_]+_[^_]+_\d+-\d+)(_[^_]+)$') {
    # rename file, insert `-01` between the two captured values
    $_ |Rename-Item -NewName ($Matches[1,2] -join '-01')
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.