2016-06-21 95 views
1

我想遍历一组文件夹并将它们复制到PowerShell中的不同位置。所有的文件夹遵循以下命名约定:遍历PowerShell中的文件

20160621 

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

回答

1

只需使用Get-ChildItem cmdlet来检索文件,并使用Where-Object cmdlet的筛选。

下面的脚本结合了三种Where条件

  1. 获取所有目录
  2. 确保目录名称包含正好六位数字。
  3. 解析六位数一个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' 
+0

完美的作品!好吧,有几种情况,目标中存在具有相同日期的文件夹。我会如何说“如果存在合并内容”? –

+0

尝试Copy-Item cmdlet –

+0

会合并内容吗? –