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
假设我有一个每日日期生成的 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