我正在编写一个脚本来查找最旧的文件组,一旦找到我需要能够重命名它们的扩展名。
以下是我到目前为止的内容
$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
我的问题是如何选择具有最早创建时间的所有文件,但是我需要批量执行此操作,因此可能存在具有多个月创建时间的文件
多个月的例子
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
因此,在我的脚本运行时,它第一次仅在4月份使用创建时修改文件,在下次运行时需要修改3月份的文件,等等
答案 0 :(得分:0)
如果要选择具有最早日期的文件,可以按创建日期对文件进行分组,按日期排序,然后选择第一个组(按升序排序时最早的日期):
$Files = $SubDirectories |
gci -ea SilentlyContinue |
Group-Object { $_.CreationTime.Date } |
Sort-Object { Get-Date $_.Name } |
Select-Object -First 1 -Expand Group |
...