【发布时间】:2016-06-21 18:58:17
【问题描述】:
我正在尝试遍历一组文件夹并将它们复制到 PowerShell 中的不同位置。所有文件夹都遵循以下命名约定:
20160621
这显然是用yyyymmdd 格式写的一天。由于所有文件夹都遵循这个约定,我的问题是我怎么说:复制过去一周的所有文件夹“?我曾想过使用(get-date).AddDays(-7),但我不确定如何将文件夹名称识别为日期对象而不是字符串。
【问题讨论】:
我正在尝试遍历一组文件夹并将它们复制到 PowerShell 中的不同位置。所有文件夹都遵循以下命名约定:
20160621
这显然是用yyyymmdd 格式写的一天。由于所有文件夹都遵循这个约定,我的问题是我怎么说:复制过去一周的所有文件夹“?我曾想过使用(get-date).AddDays(-7),但我不确定如何将文件夹名称识别为日期对象而不是字符串。
【问题讨论】:
只需使用Get-ChildItem cmdlet 检索文件并使用Where-Object cmdlet 过滤它们。
以下脚本结合了三个Whereconditions
DateTime 对象并确保其早于 7 天前:脚本:
Get-ChildItem 'your_source' | Where-Object {
$_.PsIsContainer -and
$_.BaseName -match '\d{6}' -and
([DateTime]::ParseExact($_.BaseName, 'yyyyMMdd', $null) -gt (Get-Date).AddDays(-7))
} | Copy-Item -Destination 'Your_destination'
【讨论】:
-force
merge 是什么意思?