我们在名称中生成带日期的文件.(*下面是日期的通配符)我想获取最后一个文件,包含该文件的文件夹在其标题中也有一个日期(仅限月份).
我正在使用PowerShell,我计划每天运行它.到目前为止这是脚本:
$LastFile = *_DailyFile
$compareDate = (Get-Date).AddDays(-1)
$LastFileCaptured = Get-ChildItem -Recurse | Where-Object {$LastFile.LastWriteTime
-ge $compareDate}
Run Code Online (Sandbox Code Playgroud)
man*_*lds 142
如果您想要目录中的最新文件,而您只使用它LastWriteTime来确定最新文件,则可以执行以下操作:
gci path | sort LastWriteTime | select -last 1
Run Code Online (Sandbox Code Playgroud)
另一方面,如果您只想依赖具有日期的名称,您应该能够做类似的事情
gci path | select -last 1
Run Code Online (Sandbox Code Playgroud)
此外,如果目录中有目录,则可能需要添加 ?{-not $_.PsIsContainer}
Ken*_*war 15
$latest = (Get-ChildItem -Attributes !Directory | Sort-Object -Descending -Property LastWriteTime | select -First 1)
$latest_filename = $latest.Name
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
Get-ChildItem -Attributes !Directory *.txt或Get-ChildItem或gci:仅获取当前目录中的文件列表。我们也可以根据需要提供文件扩展名过滤器,例如*.txt. 参考:gci、Get-ChildItemSort-Object -Descending -Property LastWriteTime:按照LastWriteTime(修改时间)对文件进行降序排序。参考select -First 1:获取第一条/顶部记录。参考Select-Object/选择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----
Run Code Online (Sandbox Code Playgroud)
@manojlds 的答案可能最适合您只对根目录中的文件感兴趣的情况:
\path
\file1
\file2
\file3
Run Code Online (Sandbox Code Playgroud)
但是,如果您感兴趣的文件是文件和目录树的一部分,例如:
\path
\file1
\file2
\dir1
\file3
\dir2
\file4
Run Code Online (Sandbox Code Playgroud)
要递归地查找 Windows 中最近修改的 10 个文件的列表,您可以运行:
PS > $Path = pwd # your root directory
PS > $ChildItems = Get-ChildItem $Path -Recurse -File
PS > $ChildItems | Sort-Object LastWriteTime -Descending | Select-Object -First 10 FullName, LastWriteTime
Run Code Online (Sandbox Code Playgroud)
小智 5
是的,我认为这会更快。
Get-ChildItem $folder | Sort-Object -Descending -Property LastWriteTime -Top 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
90487 次 |
| 最近记录: |