我正在尝试找到一种解决方案,以编程方式从文件名中删除某些日期。我的文件具有以下格式:
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),而无需实际执行任何文件操作。一切正常后,将其删除,您可以继续进行实际的重命名了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句