在Powershell中迭代文件

时间:2016-06-21 18:58:18

标签: powershell powershell-v2.0

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

20160621

这显然是用yyyymmdd格式写的那一天。由于所有文件夹都遵循此惯例,我的问题是如何说:复制过去一周的所有文件夹“?我想过使用(get-date).AddDays(-7)但我不确定如何将文件夹名称识别为日期对象而不是字符串。

1 个答案:

答案 0 :(得分:1)

只需使用Get-ChildItem cmdlet检索文件并使用Where-Object cmdlet对其进行过滤。

以下脚本结合了三个Where条件

  1. 获取所有目录
  2. 确保目录名称包含正好六位数。
  3. 将六位数解析为DateTime个对象,并确保其早于七天前:
  4. <强>脚本:

    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'