1
我試圖刪除大於30天的%TEMP%
中的所有文件(不是文件夾)。問題在於某些程序正在使用某些文件,因此無法刪除它們。我試圖解決的問題如下:刪除未鎖定的文件(使用中)
function IsFileLocked($filePath){
#write-host $filePath
Rename-Item $filePath $filePath -ErrorVariable errs -ErrorAction SilentlyContinue
$errs.Count
if ($errs.Count -ne 0)
{
return $true #File is locked
}
else
{
return $false #File is not locked
}
}
$Path= "$env:temp"
if ((Test-Path -Path $Path) -ieq $true)
{
$Daysback = '-30'
$CurrentDate = Get-Date
$DatetoDelete = $CurrentDate.AddDays($Daysback)
get-childitem $Path -recurse | Where-Object {$_.LastWriteTime -lt $DatetoDelete } |
Where-Object {$_.PSIsContainer -eq $False }| Where-Object {(IsFileLocked -filePath "($_)") -eq $false }# | remove-item -force #-WhatIf
}
的問題是,(IsFileLocked -filePath "($_)") -eq $false
不返回任何元素
是否有可能get-childitem
塊的文件,讓所有的人都被鎖定時。我跑get-childitem
任何其他的想法如何解決這個問題
謝謝,這是更好的方法! –