【问题标题】:Deleting files with Powershell recursively使用 Powershell 递归删除文件
【发布时间】:2020-02-06 07:38:48
【问题描述】:

我遇到了一个奇怪的问题,我正在尝试使用一个流程来自动删除文件夹和子文件夹中的文件,我正在尝试仅删除超过 7 天的文件。

我的代码有效,但它会在递归进入子项时删除 7 天以下的文件。 . .任何人都可以在这里伸出援助之手吗?我只需要在每个文件夹/子文件夹中删除超过 7 天的文件。

Param (
    [string]$Source = "C:\Users\Loredanes\Downloads\",
    [string]$Days = "1"
)


$Files = Get-ChildItem $Source -Recurse | Where-Object { !$_.PSIsContainer -and $_.LastWriteTime -lt (get-date).addminutes(-$($Days)) }

$Files | Remove-Item -Force

if ($Files.count -gt 0)
{
    $Folders = @()
    ForEach ($Folder in (Get-ChildItem -Path $Source -Recurse -Directory))
    {
        $Folders += New-Object PSObject -Property @{
            Object = $Folder
            Depth = ($Folder.FullName.Split("\")).Count
        }
    }

    $Folders = $Folders | Sort Depth -Descending
    ForEach ($Folder in $Folders)
    {   
        If ($Folder.Object.GetFileSystemInfos().Count -eq 0)
        {
            Write-Host "Removing Folder: $($Folder)"
            Remove-Item -Path $Folder.Object.FullName -Force
        }
    }
}
else
{
    Write-Host "No Empty folders found after removing files older than $($Days) days."
}

【问题讨论】:

  • 如果你想删除超过 7 天的文件,这两个是没有意义的。 [string]$Days = "1"$_.LastWriteTime -lt (get-date).addminutes(-$($Days))。例如,运行这一行,你就会明白我的意思。 $days = 1 ; Get-Date ; (Get-Date).AddMinutes(-$($days))
  • 我应该如何修改这个?我知道这不是我写的有点晦涩难懂,仍然很难遵循那里的台词...显然没有意义,但是我必须根据我们的目的对其进行修改和调整...
  • 好吧,不是从脚本运行时删除所有超过 7 天的文件,而是删除所有超过 1 分钟的文件。

标签: powershell recursion powershell-2.0


【解决方案1】:

这应该做你想做的:

$source = 'D:\Test'
$days   = 7

    # Remove Files
    Get-ChildItem $Source -Recurse | Where-Object { !$_.PSIsContainer -and $_.LastWriteTime -lt (get-date).AddDays(-$($days)) } | % { Remove-Item -Path $_.FullName -Force }

    # Remove empty directories
    Get-ChildItem $source -Recurse | Where-Object { $_.PSIsContainer -and $_.GetFiles("*.*").Count -le 0 } | % { Remove-Item -Path $_.FullName -Force }

【讨论】:

  • 嘿,谢谢,将测试 7 天的时间来验证所有内容,非常感谢!
  • 如果您满意,请标记为答案。谢谢。
猜你喜欢
  • 2012-09-04
  • 1970-01-01
  • 1970-01-01
  • 2011-01-02
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
相关资源
最近更新 更多