gpt4 book ai didi

regex - 以编程方式从文件名中删除日期

转载 作者:行者123 更新时间:2023-12-03 00:38:22 25 4
gpt4 key购买 nike

我正在尝试找到一种解决方案,以编程方式从文件名中删除某些日期。我的文件具有以下格式:

net_20110909_servercleanup.pdf



要么

net_servercleanup_20110909.pdf



我已经使用下面发布的解决方案(也可以在Stack Overflow上找到)来更新某些文件名,但是理想情况下,我将拥有一个可以更新目录中所有文件的解决方案。我想删除日期和下划线之一,以便最终文件如下所示:

net_servercleanup.pdf



我想通过批处理文件或PowerShell执行此操作。我已经看到一些解决方案,可以使用RegEx来完成类似的任务,但是我对它们的了解还不足以创建可行的解决方案。
关于如何做到这一点的任何建议?
$filelist = (get-childitem c:\folder | Where-Object {$_.mode -match "a"} | foreach-object      {$_.name})
foreach ($file in $filelist)
{
$len = $file.length
$newname = $file.substring(0,$len -13)
$newname = $newname + '.txt'
Rename-Item C:\folder\$file $newname
clear-variable newname, len
}

最佳答案

PowerShell,未经测试,但可以正常工作:

$filelist = Get-ChildItem C:\folder | Where-Object {$_.Mode -match "a"} `
| Foreach-Object {$_.FullName}

foreach ($fullpath in $filelist)
{
$newpath = $fullpath -replace "_(19|20)[0-9]{6}"
Rename-Item -Path $fullpath -NewName $newpath -WhatIf
}
_(19|20)[0-9]{6}正则表达式匹配以下模式:前导“_”后跟“19”或“20”,然后是任意六位数字。如果文件名的日期与示例不完全匹配,则可能需要修改正则表达式以将其全部捕获。
-WhatIf开关允许您进行“空运行”,即测试cmdlet(如Remove-Item),而无需实际执行任何文件操作。一切正常后,将其删除,您可以继续进行实际的重命名了。

关于regex - 以编程方式从文件名中删除日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24398681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com