2016-06-21 98 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

會合並內容嗎? –