Powershell Get-ChildItem目录中的最新文件


73

我们生成名称中带有日期的文件。(下面的*是日期的通配符)我想获取最后一个文件,并且包含该文件的文件夹的标题中也带有日期(仅月)。

我正在使用PowerShell,并且计划将其每天运行。到目前为止,这是脚本:

  $LastFile = *_DailyFile
  $compareDate = (Get-Date).AddDays(-1)
  $LastFileCaptured = Get-ChildItem -Recurse | Where-Object {$LastFile.LastWriteTime        
         -ge $compareDate}

Answers:


167

如果要在目录中使用LastWriteTime最新文件,而仅使用来确定最新文件,则可以执行以下操作:

gci path | sort LastWriteTime | select -last 1

另一方面,如果您只想依赖其中带有日期的名称,则应该能够做到类似

gci path | select -last 1

另外,如果目录中有目录,则可能需要添加一个 ?{-not $_.PsIsContainer}


@ user977645记住,请单击“上/下”箭头
CB

互联网上有谣言称“ LastAccessTime”可用于此目的。这是一个谎言。您的解决方案是正确的。
Flat Cat

对于第一个文件:排序LastWriteTime | 选择-first 1
技术斯巴达人

1
如果我误解了您的帖子,请原谅我使用snowcode,但我相信您是错误的。最新文件是由-last 1接收的,而不是第1个。我自己进行了测试,我有今天和2019年一样的新文件。当我使用-last 1运行以上代码时,我会得到今天的文件。当我将其更改为-first 1时,我得到了最早的文件,即2019
。– TelluRye

-file如果您只想要文件。
Timo

1

您可以尝试对降序排序“ LastWriteTime -Descending排序”,然后“ select -first 1”。不知道哪一个更快


1

是的,我认为这样会更快。

Get-ChildItem $folder | Sort-Object -Descending -Property LastWriteTime -Top 1 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.