查找最旧的文件组并执行操作
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>
...
我正在编写一个脚本来查找最旧的文件组,找到后我需要能够重命名它们的扩展名。
以下是我目前所拥有的
$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>
...