2017-03-08 101 views
0

我是PowerShell的新手,對此不甚瞭解。Powershell刪除文件夾,如果所有文件比x天更舊

我正在尋找一種方法來刪除一個文件夾和所有子文件夾,如果這個文件中的所有文件都超過x天。我有一個代碼刪除文件夾和所有子文件夾中的所有文件,但我不知道如何改變它的權利。

$Now = Get-Date 

$Days = "30" 

$TargetFolder = "C:\temp" 
$Extension = "*.*" 
$LastWrite = $Now.AddDays(-$Days) 

$Files = Get-Childitem $TargetFolder -Include $Extension -Recurse | Where {($_.CreationTime -le "$LastWrite") -and ($_.LastWriteTime -le "$LastWrite")} 


foreach ($File in $Files) 
    { 
    if ($File -ne $NULL) 
     { 
     write-host "Deleting File $File" -ForegroundColor "Red" 
     Remove-Item $Location.FullName | out-Null 
     } 
    else 
     { 
     Write-Host "No more files to delete!" -foregroundcolor "Green" 
     } 
    } 
+0

在30天前創建或修改? – 4c74356b41

+0

兩者都必須得到尊重,因爲如果您在2015年下載了文件,ModifieDate是2015年,並且您在2017/22/02將其移至了「C:\ temp」,那麼創建日期是我不會將其刪除。 –

+0

複製一個文件不會修改創建日期或寫入時間,不知道你想如何實現這一點 – 4c74356b41

回答

0

枚舉所有文件夾和第一排序他們最長的路徑,所以處理該目錄下往上:

Get-ChildItem $TargetFolder -Recurse -Directory | 
    Select-Object -Expand FullName | 
    Sort-Object Length -Desc 

過濾器的列表中沒有任何文件或文件夾大於x新目錄天他們:

... | Where-Object { 
    -not $(Get-ChildItem $_ -Recurse | Where-Object { 
     $_.Creationtime -ge $LastWrite -or 
     $_.LastWriteTime -ge $LastWrite 
    }) 
} 

然後刪除生成的文件夾:

... | Remove-Item -Recurse -Force 
+0

哇,看起來很greate thx :) –

相關問題