首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在文件名+7天内复制和重命名日期。(PowerShell)

在文件名+7天内复制和重命名日期。(PowerShell)
EN

Stack Overflow用户
提问于 2018-12-22 08:49:06
回答 1查看 683关注 0票数 0

我有一个电子表格文件夹,所有的开始都是“一周通讯”,然后是日期。例如“24-12-2018周通讯”。我想要做的是一个脚本,找到最新的文件,在同一个文件夹中复制它,并通过添加7天来更改文件名中的日期。

到目前为止,我已经成功地找到了最最新的文件,并将其复制为“周通信测试”,但是我无法找到向文件名添加日期的任何内容。

代码语言:javascript
复制
Get-ChildItem -Path "\\DESKTOP-88SIUP6\Users\User\Desktop\Shared\STOCK ORDERS\2018" |
    Sort-Object -Property CreationTime -Descending |
    Select-Object -First 1 |
    Copy-Item -Destination "\\DESKTOP-88SIUP6\Users\User\Desktop\Shared\STOCK ORDERS\2018\WEEK COMM TEST.xlsx" -Force

有人能帮帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-22 09:16:32

这将从文件.BaseName属性中捕获字符串日期,将其转换为[datetime]对象,添加7天,将其转换为[向后grin]格式的日期字符串,然后将旧日期字符串替换为文件的.FullName中的新日期字符串。

这将使重命名过程变得非常直接和简单。笑一笑

如果可以的话,如果您切换到更符合逻辑、可适当排序的yyyy-MM-dd格式,您可能会有一个更轻松的时间。你可能做不到,但值得一试.

代码语言:javascript
复制
$FileName = [System.IO.FileInfo]'WEEK COMM 24-12-2018.xlsx'

$FN_StringDate = $FileName.BaseName.Split(' ')[2]
$FN_Date = [datetime]::ParseExact($FN_StringDate, 'dd-MM-yyyy', $Null)

$NewFN_StringDate = $FN_Date.AddDays(7).ToString('dd-MM-yyyy')
$NewFileName = $FileName.FullName -replace $FN_StringDate, $NewFN_StringDate

$FileName.FullName
$NewFileName

输出旧的,然后新的..。

代码语言:javascript
复制
D:\Data\Scripts\WEEK COMM 24-12-2018.xlsx
D:\Data\Scripts\WEEK COMM 31-12-2018.xlsx

编辑以添加一个非常具体的示例。因为我没有任何这样的位置,所以还没有经过测试.这就是为什么-WhatIf在那里。笑一笑

代码语言:javascript
复制
$SourceDir = '\\DESKTOP-88SIUP6\Users\User\Desktop\Shared\STOCK ORDERS\2018'
Get-ChildItem -Path $SourceDir |
    Sort-Object -Property CreationTime -Descending |
    Select-Object -First 1 |
    ForEach-Object {
        $FN_StringDate = $_.BaseName.Split(' ')[2]
        $FN_Date = [datetime]::ParseExact($FN_StringDate, 'dd-MM-yyyy', $Null)

        $NewFN_StringDate = $FN_Date.AddDays(7).ToString('dd-MM-yyyy')
        $NewFileName = $_.FullName -replace $FN_StringDate, $NewFN_StringDate

        # remove the "-WhatIf" when you are ready to do this for real
        Copy-Item -LiteralPath $_.FullName -Destination $NewFileName -WhatIf
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53894248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档