在Powershell中迭代文件
我正在尝试迭代一组文件夹,并将它们复制到PowerShell中的其他位置。所有文件夹都遵循以下命名约定:在Powershell中迭代文件,powershell,powershell-2.0,Powershell,Powershell 2.0,我正在尝试迭代一组文件夹,并将它们复制到PowerShell中的其他位置。所有文件夹都遵循以下命名约定: 20160621 这一天显然是用yyyymmdd格式写的。由于所有文件夹都遵循此约定,我的问题是如何说:复制过去一周的所有文件夹?我曾想过使用(get date).AddDays(-7)但我不确定如何将文件夹名称识别为日期对象而不是字符串。只需使用cmdlet检索文件并使用cmdlet进行过滤即可 下面的脚本组合了三个条件,其中条件 获取所有目录 确保目录名正好包含六位数字 将六位数字解析
20160621
这一天显然是用yyyymmdd
格式写的。由于所有文件夹都遵循此约定,我的问题是如何说:复制过去一周的所有文件夹?我曾想过使用(get date).AddDays(-7)
但我不确定如何将文件夹名称识别为日期对象而不是字符串。只需使用cmdlet检索文件并使用cmdlet进行过滤即可
下面的脚本组合了三个条件,其中条件
获取所有目录
确保目录名正好包含六位数字
将六位数字解析为DateTime
对象,并确保其早于七天前:
脚本:
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'
这很好!几乎可以。在某些情况下,目标中存在具有相同日期的文件夹。我如何说“如果存在合并内容”?请尝试在Copy Item cmdlet上使用-force
,这会合并内容吗?您使用合并的意思是什么?例如不删除当前文件,而只添加新文件