1

So I have 150 folders with 100's of files named like this.. M10001662_3269506_DVLA_Original_Complete_archived_201208_2226.pdf M10001662_3269506_DVLA_Original_Complete_archived_201209_2203.pdf M10001662_3269506_DVLA_Original_Complete_archived_201210_2231.pdf M10001662_3269506_DVLA_Original_Complete_archived_201211_2202.pdf

编辑大约有 10 个不同的文件名,所有文件名都在末尾添加了“_archived_YYYYMMDD_HHMM.pdf”。我只需要每个文件的一个(它们都是相同的,所以任何人都会这样做),最后没有“_archived_YYYYMMDD_HHMM.pdf”。注意:Theo 要求提供所需的输出 - 从 M10001662_3269506_DVLA_Original_Complete_archived_201208_2226.pdf 等许多文件到 M10001662_3269506_DVLA_Original_Complete.new 等文件

正在寻找重命名我想用 *.new 保留的文件然后删除所有 *.pdf 文件(正如我知道如何做的那样),最后将 .new 文件重命名回 *.pdf 只留下一个文件。

希望这使它更清楚, 结束编辑

我有以下代码,它为我提供了我想要保留的文件名,但我实际上无法操作重命名位..

# Remove duplicate files - based on name/string search
# set the rootfolder to search
$dir = 'O:\UKCH-DATA\Contact Centre\04 - Main\14 - DVLA\_case_files_archive\M10001662'
# loop through the directories directly under $dir
Get-ChildItem -Path $dir -Filter "*.pdf" |
Group-Object -property {$_.BaseName.split('archived', 2)[0]} | 
ForEach-Object { $_.Group | Select-Object -First 1} 
#Write-Output $Filename.VersionInfo |
#Rename-Item $Filename.VersionInfo -NewName -replace ("\.pdf", ".new")

重命名的第一部分有问题,所以请帮忙

4

2 回答 2

0

您可以更轻松地做到这一点:

Get-ChildItem -Path $dir -Filter "*.pdf" |
  Group-Object -property { $_.BaseName.split('archived', 2)[0] } | foreach {
    # rename the file to keep (the 1st file from the group)
    $_.Group | select -First 1 | Rename-Item -NewName ($_.Name + ".pdf")
    # delete the others:
    $_.Group | select -Skip 1 | Remove-Item
}
于 2021-04-29T13:21:21.583 回答
0

对于重命名部分,您可以使用延迟绑定脚本块

# ... represents your command from the question.
... | Rename-Item -NewName { $_.Name -replace '_archived.+', '.new' } -WhatIf

注意:上面命令中的-WhatIf常用参数是预览操作。-WhatIf 一旦您确定该操作将执行您想要的操作,请删除。

注意:我假设您也想_archived*从文件名中删除该部分,这就是上述-replace操作的作用;如果您只是想将文件扩展名从 更改.pdf.new,请使用{ $_.BaseName + '.new' }.


由于上述更改了您要保留的文件的文件扩展名,因此您可以删除.pdf留下的文件:

Remove-Item -Path $dir\*.pdf -WhatIf
于 2021-04-29T13:23:07.340 回答