Powershell获取目录中最新的ChildItem文件
我们制作名称中带有日期的文件。 (*下面是日期的通配符) 我想抓取最后一个文件,包含该文件的文件夹的标题中也有一个日期(仅限月份) 我正在使用PowerShell,并计划每天运行它。以下是迄今为止的脚本:Powershell获取目录中最新的ChildItem文件,powershell,Powershell,我们制作名称中带有日期的文件。 (*下面是日期的通配符) 我想抓取最后一个文件,包含该文件的文件夹的标题中也有一个日期(仅限月份) 我正在使用PowerShell,并计划每天运行它。以下是迄今为止的脚本: $LastFile = *_DailyFile $compareDate = (Get-Date).AddDays(-1) $LastFileCaptured = Get-ChildItem -Recurse | Where-Object {$LastFile.LastWriteT
$LastFile = *_DailyFile
$compareDate = (Get-Date).AddDays(-1)
$LastFileCaptured = Get-ChildItem -Recurse | Where-Object {$LastFile.LastWriteTime
-ge $compareDate}
如果您想要目录中的最新文件,并且仅使用
LastWriteTime
确定最新文件,可以执行以下操作:
gci path | sort LastWriteTime | select -last 1
另一方面,如果您只想依赖于其中包含日期的名称,那么您应该能够使用类似的名称
gci path | select -last 1
此外,如果目录中有目录,您可能需要添加一个
?{-not$\p.psicContainer}
您可以尝试按降序排序“sort LastWriteTime-descending”然后“select-first 1”。不确定哪一个更快是的,我认为这会更快
Get-ChildItem $folder | Sort-Object -Descending -Property LastWriteTime -Top 1
尝试:
说明:
或Get ChildItem-属性!目录*.txt
或获取子项
:仅获取当前目录中的文件列表。我们也可以根据需要提供文件扩展名筛选器,如gci
。参考文献:*.txt
:按LastWriteTime(修改时间)降序排序文件李>排序对象-降序-属性LastWriteTime
:获取第一条/顶部记录。参考文献select-First 1
@user977645请记住接受此答案,单击向上/向下投票箭头下方左侧的v符号。互联网上有传言称“LastAccessTime”适用于此。这是一个谎言。您的解决方案是正确的。对于第一个文件:| sort LastWriteTime | select-first 1 Forge me snowcode,如果我误解了您的帖子,但我相信您是错误的。最新的文件由最后一个1接收,而不是第一个1。我自己测试了这个,我的文件和今天一样新,2019年一样旧。当我使用-last 1运行上述代码时,我确实得到了今天的文件。当我将其更改为-first 1时,我会得到最旧的文件,即2019年的文件。
-file
如果您只需要文件。我喜欢按降序排序,然后获取第一个结果。这取决于它在幕后的工作方式,在一个大目录上可能会更快。但您需要使用管道进行选择。此外,Top无效Get ChildItem$folder | Sort Object-Descending-Property LastWriteTime | Select-First 1
Yeah my bad,-Top仅在PowerShell 6中引入
$latest = (Get-ChildItem -Attributes !Directory | Sort-Object -Descending -Property LastWriteTime | select -First 1)
$latest_filename = $latest.Name
PS C:\Temp> Get-ChildItem -Attributes !Directory *.txt | Sort-Object -Descending -Property LastWriteTime | select -First 1
Directory: C:\Temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 5/7/2021 5:51 PM 1802 Prison_Mike_autobiography.txt
PS C:\Temp> $latest.Name
Prison_Mike_autobiography.txt
PS C:\Temp> $latest.DirectoryName
C:\Temp
PS C:\Temp> $latest.FullName
C:\Temp\Prison_Mike_autobiography.txt
PS C:\Temp> $latest.CreationTime
Friday, May 7, 2021 5:51:19 PM
PS C:\Temp> $latest.Mode
-a----