在Powershell中迭代文件

在Powershell中迭代文件,powershell,powershell-2.0,Powershell,Powershell 2.0,我正在尝试迭代一组文件夹,并将它们复制到PowerShell中的其他位置。所有文件夹都遵循以下命名约定: 20160621 这一天显然是用yyyymmdd格式写的。由于所有文件夹都遵循此约定,我的问题是如何说:复制过去一周的所有文件夹?我曾想过使用(get date).AddDays(-7)但我不确定如何将文件夹名称识别为日期对象而不是字符串。只需使用cmdlet检索文件并使用cmdlet进行过滤即可 下面的脚本组合了三个条件,其中条件 获取所有目录 确保目录名正好包含六位数字 将六位数字解析

我正在尝试迭代一组文件夹,并将它们复制到PowerShell中的其他位置。所有文件夹都遵循以下命名约定:

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
    ,这会合并内容吗?您使用
    合并的意思是什么?例如不删除当前文件,而只添加新文件