ファイルがtest.dll
でない限り、14日以上経過したファイルを削除するスクリプトがあります。特定のファイル以外の古いファイルを削除します。ディレクトリが削除されています
問題は、フォルダが14日以上経過してもファイルが若い、たとえば2日前にフォルダとファイルが削除されている場合です。ファイルが存在する場合、フォルダが削除されないようにこれを修正するにはどうすればよいですか?
ファイルはツリー内の任意のサブディレクトリに置くことができます。基本的には、test.dll
を除いて、14日以上経過したすべてのファイルとフォルダをサブディレクトリ構造に保存することをお勧めします。ここで
は私が使っていたスクリプトです:
$Now = Get-Date
$Days = "14"
$TargetFolder = "E:\Web2\testdir"
$Extension = "*.*"
$LastWrite = $Now.AddDays(-$Days)
#---- get files based on lastwrite filter and specified folder ----!
$Files = Get-ChildItem $TargetFolder -Exclude "test.dll" -Recurse |
Where {$_.LastWriteTime -le "$LastWrite"}
#---- For each file in $TargetFolder folder, run a foreach loop and delete the file
if ($Files) {
foreach ($File in $Files) {
if ($File -ne $null) {
Write-Host "Deleting File $File" -ForegroundColor "DarkRed"
Remove-Item $File.FullName -Recurse -Force -ErrorAction SilentlyContinue | Out-Null
} else {
Write-Host "No more files to delete!" -ForegroundColor "Green"
}
}
} else {
Write-Host "There are no files older than $Days days old in $TargetFolder" -ForegroundColor "Green"
}
[OK]を - 私は_ $ -not追加PSIsContainer。この行に$ Files = Get-ChildItem $ TargetFolder -Exclude "upd.info.raf" -Recurse |どこでも{(-not $ _。PSIsContainer) - と($ _。LastWriteTime -le "$ LastWrite")} – sasquach007
これはうまくいきました。ファイルはサブディレクトリに保存されていましたが、古いファイルはすべて削除されました。唯一の問題は何千もの空のディレクトリが残っていることです。空のディレクトリも削除する方法はありますか? 14日間の基準を満たすものは? – sasquach007