根据子文件夹的上次修改日期对文件夹排序

时间:2018-05-20 16:41:30

标签: powershell filesystems

我有一个拥有超过1000个文件夹的Windows网络共享,这些文件夹也有子文件夹。

我想删除几年后未修改过的文件夹。

当我在“修改日期”之后在文件资源管理器中排序时,它会正确排序父文件夹。

但不考虑子文件夹中的更改。

我尝试创建一个PowerShell脚本,根据文件夹或子文件夹中的上次写入时间对网络共享上的所有文件夹进行排序。

不幸的是,在当前状态下,它一遍又一遍地仅列出最新修改的文​​件夹。

示例:

Get-ChildItem c:\tmp -Directory | ForEach-Object { Get-ChildItem -Directory -Recurse | Sort {$_.LastWriteTime} -Descending | Select {$_.FullName}, {$_.LastWriteTime} -First 1 }

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

我想你想要"任何子文件/文件夹的最新LastWriteTime",这是

Get-ChildItem -Recurse -Force | 
    Sort-Object -Property LastWriteTime |
    Select-Object -Last 1 -ExpandProperty LastWriteTime

然后你可以写出像:

这样的全部内容
Get-ChildItem -Path 'c:\test' -Directory | 
    Select-Object -Property Name, @{Label='LastWriteInside'; Expression={ 
        ($_ | Get-ChildItem -Recurse -Force|
         Sort-object -property LastWriteTime|
         Select-Object -expandproperty lastwritetime -Last 1)
        }} |
    Sort-Object -Property LastWriteInside