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

叶美丝

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

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

从目录中许多文件的文件名中删除日期

来自分类Dev

如何删除文件-基于文件名中的日期

来自分类Dev

根据文件名中的日期删除和 tar 文件

来自分类Dev

如何删除文件-基于文件名中的日期

来自分类Dev

Excel VBA-在动态文件名中删除日期

来自分类Dev

如何根据文件名中的日期删除旧备份?

来自分类Dev

Excel VBA-在动态文件名中删除日期

来自分类Dev

如何解析文件中的文件名并以交互方式删除

来自分类Dev

在UNIX中删除超过5天的文件(文件名中的日期,而不是时间戳)

来自分类Dev

使用文件名中的日期格式删除X天之前的文件

来自分类Dev

更改文件名中的日期格式

来自分类Dev

如何在Visual Studio中基于文件名以编程方式对C#.cs文件进行更改?

来自分类Dev

删除日期并从 Linux 中的文件名中附加到 .CSV 之前

来自分类Dev

如何按设置为日期的文件名删除文件?

来自分类Dev

删除文件名日期早于 7 天的文件

来自分类Dev

从文件名中删除特殊字符

来自分类Dev

从特定路径中删除文件名?

来自分类Dev

从文件名中删除单词列表

来自分类Dev

从文件名中删除模式

来自分类Dev

批量删除文件名中的括号

来自分类Dev

从文件名中删除特殊字符

来自分类Dev

如何从文件名中删除空格

来自分类Dev

从文件名中删除版本后缀

来自分类Dev

从文件名中删除前缀

来自分类Dev

删除文件名中的零

来自分类Dev

从文件名中删除随机文本

来自分类Dev

从文件名中删除星号

来自分类Dev

删除文件名中的特定字符