Powershell - 文件名更改日期

Powershell - File name change Date

假设我有一个每日日期生成的 CSV 文件

例如:File_1_20220321.CSV

如何使用 Powershell 将年份更改为 2015 年,这样文件名将是:

例如:File_1_20150321.CSV

如果您通过

自动生成csv-File的日期
Get-Date -uformat "%m%d%Y"

对于干净的格式,这是最合乎逻辑的方法,您可以简单地添加另一个参数:

Get-Date -uformat "%m%d%Y" -year "2015"

因此导出日志的方式为:

$dateold = Get-Date -uformat "%m%d%Y" -year "2015"    
Export-Csv -Path "C:\yourpath\filename_$dateold.csv" -InputObject $myobject

要自动将名称中包含今天日期的文件重命名为 7 年前的日期,您可以执行以下操作:

$today  = Get-Date
$filter = '*_{0:yyyyMMdd}.csv' -f $today
Get-ChildItem -Path 'X:\somewhere' -Filter $filter -File | 
    Rename-Item -NewName { $_.Name -replace "_$($today.Year)", "_$($today.AddYears(-7).Year)"} -WhatIf

我已将安全开关 -WhatIf 添加到 Rename-Item cmdlet。
这使得该命令仅 在控制台中显示 发生什么,实际上没有任何内容被重命名。一旦您对代码将正确重命名感到满意,请删除 -WhatIf 开关并再次 运行。


如果替换中的日期需要有效(比如今天是 2 月 29 日并将年份更改为 7 年前,您最终会得到一个无效日期),请使用此代码:

$today        = Get-Date
$todayPattern = '{0:yyyyMMdd}'-f $today
$olderPattern = '{0:yyyyMMdd}'-f $today.AddYears(-7)
$filter       = '*_{0:yyyyMMdd}.csv' -f $today
Get-ChildItem -Path 'X:\somewhere' -Filter $filter -File | 
    Rename-Item -NewName { $_.Name -replace "_$todayPattern", "_$olderPattern"} -WhatIf