windows Powershell删除文件超过30天,但排除某些文件夹及其内容

zqdjd7g9  于 2022-12-19  发布在  Windows
关注(0)|答案(1)|浏览(156)

这是我目前的代码,但遗憾的是,它删除了排除文件夹的内容。我想保持文件夹的内容是在一个排除文件夹。
我已经尝试了几天,但无法找到解决方案。也许这是PowerShell的限制?

$path = "C:\Users\bob\Desktop\testfolder"
$exclude = @('FOLDERNAME', 'filename.txt')
$lastWrite = (Get-Date).AddDays(-30)

Get-ChildItem -Path $path -Recurse -Exclude $exclude | Where-Object {$_.LastWriteTime -le $lastWrite} | Remove-Item

方法2(不起作用):

$results = Get-ChildItem -Path $path -Recurse | Where-Object {$_.LastWriteTime -le $lastWrite}
$path = "C:\Users\louisp\Desktop\testfolder"
$exclude = @('oldkeep', 'oldkeep2', 'important')
$lastWrite = (Get-Date).AddDays(-30)

foreach ($item in $results) {
   $noExeption = $true
   foreach($exeption in $exclude){
      if($item.name -eq $exeption){
         $noExeption = $false
         break
      }
   }
   if($noExeption) {
      remove-item $item
   }
}
vhmi4jdf

vhmi4jdf1#

我建议遵循第二条变通方案:

$results= Get-ChildItem -Path $path -Recurse | Where-Object {$_.LastWriteTime -le $lastWrite} 
foreach ($item in $results){
   $notExeption=$true
   foreach($exeption in $exclude){
      if($item.name -eq $exeption){
         $noExeption=$false
         break
      }
   }
   if($noexeption){
      remove-item -LiteralPath $item.name
   }
}

相关问题