查找最旧的文件组并执行操作

Find the oldest group of files and perform action

我正在编写一个脚本来查找最旧的文件组,找到后我需要能够重命名它们的扩展名。

以下是我目前所拥有的

$DirectoryToScan = "C:\Temp"
$SubDirectories = @(gci -path $DirectoryToScan -rec -ea SilentlyContinue | ? {$_.PSIsContainer -and $_.Fullname -notmatch 'Test'} | ? {$_.GetFiles().count -gt 0} | % {$_.FullName})
$Files = $SubDirectories | gci -ea SilentlyContinue | Select FullName, CreationTime | Sort CreationTime

我得到的是以下内容

FullName                                                       CreationTime         
--------                                                       ------------         
C:\Temp\Firefox\Firefox\App\DefaultData\profile\bookmarks.html 4/6/2015 1:16:32 PM  
C:\Temp\Firefox\Firefox\App\DefaultData\profile\bookmarks.html 4/6/2015 1:16:32 PM  
C:\Temp\Firefox\Firefox\App\DefaultData\profile\bookmarks.html 4/6/2015 1:16:32 PM  
C:\Temp\Firefox\Firefox\Data\profile\bookmarks.html            4/6/2015 1:16:33 PM  
C:\Temp\Firefox\Firefox\Data\profile\bookmarks.html            4/6/2015 1:16:33 PM  
C:\Temp\Firefox\Firefox\help.html                              4/6/2015 1:16:34 PM  
C:\Temp\Folder1\IND0314C1AC04.htm                              7/10/2015 10:46:23 AM

我的问题是如何 select 所有具有最早创建时间的文件,但更重要的是我需要分批进行,因此可能存在创建时间长达数月的文件

多个月份的示例

FullName                  CreationTime
--------                  ------------
File1.htm                 4/1/2015 1:26:32 PM
File2.htm                 4/15/2015 10:46:14 AM
File3.htm                 5/1/2015 12:01:19 PM
File4.htm                 5/20/2015 1:15:39 AM
File5.htm                 7/10/2015 1:00:01 PM

所以在我的脚本的 运行 中,第一次它只会修改创建时间在四月份的文件,在下一个 运行 中,它需要修改来自三月等

如果您想 select 最旧日期的文件,您可以按创建日期对文件进行分组,按日期排序,然后 select 第一组(按升序排序时最旧的日期顺序):

$Files = $SubDirectories |
         gci -ea SilentlyContinue |
         <b>Group-Object { $_.CreationTime.Date } |
         Sort-Object { Get-Date $_.Name } |
         Select-Object -First 1 -Expand Group |</b>
         ...