gpt4 book ai didi

Powershell 查找文件夹,删除留下最新 5 的文件

转载 作者:行者123 更新时间:2023-12-02 23:22:30 25 4
gpt4 key购买 nike

我们使用名为 Revit 的软件,文件保存为:filename.rvt

每次用户编辑文件时,Revit 都会自行将旧文件保存为 filename.xxxx.rvt 格式(其中 xxx 是数字)。

随着文件被编辑数百次,我们在文件服务器上有许多不必要的文件。

我正在写一个脚本:

  • 找到包含 Revit 备份文件的文件夹
  • 删除除最近修改的 5 个 revit 备份文件之外的所有文件

  • 我尝试了以下两种方法
    $searchpath = "e:\"
    # Find a unique list of directories that contains a revit backup file (*.*.rvt)
    $a = Get-ChildItem -Path $searchpath -Include *.*.rvt -Recurse | Select-object Directory -expandproperty FullName | Get-Unique -AsString

    # For each folder that contains a single revit backup file (*.*.rvt)...
    # - Sort by modified time
    # - Select all except first 5
    $a | Get-ChildItem -Include *.*.rvt | Sort-Object LastWriteTime -descending | select-object -skip 5 -property Directory,Name,CreationTime,LastWriteTime | Out-GridView -Title "Old Backups" -PassThru

    这种方法的问题在于它只“跳过”整个搜索结果中的前 5 个文件,而不是每个文件夹中的 5 个。

    然后我使用循环进行了处理,但无济于事:
    $searchpath = "e:\"

    # Find a unique list of directories that contains a revit backup file (*.*.rvt)
    $a = Get-ChildItem -Path $searchpath -Include *.*.rvt -Recurse | Select Directory | Get-Unique -AsString

    # For each folder that contains a single revit backup file (*.*.rvt)...
    # - Sort by modified time
    # - Select all except first 5
    $a | foreach {
    $b += Get-ChildItem -Path $_.Directory.FullName -Include *.*.rvt | Sort-Object LastWriteTime -descending | select-object -skip 5 -property Directory,Name,CreationTime,LastWriteTime
    }

    $b | Out-GridView -Title "Old Backups" -PassThru

    关于正确方法的任何想法以及出了什么问题?

    最佳答案

    尝试这个:

    get-childitem -file -recurse | group Directory | where Count -gt 5 | %{
    $_.Group | Sort LastWriteTime -descending | select -skip 5 Directory,Name,CreationTime,LastWriteTime
    } | Out-GridView -Title "Old Backups"

    如果你想删除你可以这样做(删除如果)
    gci -file -recurse | group Directory | where Count -gt 5 | %{
    $_.Group | Sort LastWriteTime -descending | select -skip 5 | remove-item -WhatIf
    }

    关于Powershell 查找文件夹,删除留下最新 5 的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46271205/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com