当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何在PowerShell中获取目录中的最新文件?

作者:精品下载站 日期:2024-12-14 05:11:24 浏览:13 分类:玩电脑

如何在PowerShell中获取目录中的最新文件?


我的客户想要对目录中的最新文件进行一些文件操作。因此,我使用了各种PowerShell方法来获取PowerShell目录中的最新文件。

要获取 PowerShell 目录中的最新文件,您可以将 Get-ChildItem cmdlet 与 Sort-Object 结合使用。例如:

$directoryPath = "C:\MyFolder"
$newestFile = Get-ChildItem -Path $directoryPath -File | Sort-Object LastWriteTime -Descending | Select-Object -First 1
$newestFile.FullName

该命令检索指定路径下的文件,按照最后写入时间降序排列,并输出最新文件的全名。

1. 使用 Get-ChildItem 和 Sort-Object

使用 PowerShell 获取目录中最新文件的最简单方法是结合使用 Get-ChildItem cmdlet 和 Sort-Object。下面是一个示例 PowerShell 脚本,它根据上次写入时间检索最新文件:

$directoryPath = "C:\MyFolder"
$newestFile = Get-ChildItem -Path $directoryPath | Sort-Object LastWriteTime -Descending | Select-Object -First 1
Write-Host "The newest file is: $($newestFile.FullName)"

该脚本列出了指定目录中的所有项目,按 LastWriteTime 降序对它们进行排序,并选择第一项,即最新的文件。

下面的屏幕截图显示了我在笔记本电脑上使用 VS code 执行上述 PowerShell 脚本后的输出。

[玩转系统] 如何在PowerShell中获取目录中的最新文件?

如果您正在寻找具有特定扩展名的最新文件,您可以添加一个过滤器,如下面的脚本示例。

它将使用 PowerShell 显示目录中最新的文本文件。

$directoryPath = "C:\MyFolder"
$fileExtension = "*.txt"
$newestFile = Get-ChildItem -Path $directoryPath -Filter $fileExtension | Sort-Object LastWriteTime -Descending | Select-Object -First 1
Write-Host "The newest text file is: $($newestFile.FullName)"

此脚本与前一个脚本类似,但包含一个 -Filter 参数以仅考虑 .txt 文件。

如果您想排除目录并只考虑文件。您可以使用 -File 开关修改 Get-ChildItem cmdlet:

$directoryPath = "C:\MyFolder"
$newestFile = Get-ChildItem -Path $directoryPath -File | Sort-Object LastWriteTime -Descending | Select-Object -First 1
Write-Host "The newest file is: $($newestFile.FullName)"

2.使用ForEach-Object进行自定义排序

在 PowerShell 中,您还可以使用 ForEach-Object 从目录或文件夹中获取最新文件。

这是一个例子:

$directoryPath = "C:\MyFolder"
$newestFile = Get-ChildItem -Path $directoryPath | ForEach-Object {
    $_ | Add-Member -MemberType NoteProperty -Name "SortProperty" -Value $_.LastWriteTime -PassThru
} | Sort-Object SortProperty -Descending | Select-Object -First 1
Write-Host "The newest file is: $($newestFile.FullName)"

此脚本向每个文件对象添加自定义属性并按该属性排序。

3. 将 Get-Item 与 Sort-Object 结合使用

这是第三种方法,在这里,您可以将 Get-Item cmdlet 与 Sort-Object 结合使用,以使用 PowerShell 获取目录中的最新文件。

$directoryPath = "C:\MyFolder\*"
$newestFile = Get-Item $directoryPath | Sort-Object LastWriteTime -Descending | Select-Object -First 1
Write-Host "The newest file is: $($newestFile.FullName)"

此方法类似于使用 Get-ChildItem,但 Get-Item 用于直接检索所有项目。

您可以在下面的屏幕截图中看到输出;我执行了上面的脚本。

[玩转系统] 如何在PowerShell中获取目录中的最新文件?

结论

在本 PowerShell 教程中,我解释了如何使用以下各种方法获取 PowerShell 目录中的最新文件:

  1. 使用 Get-ChildItem 和 Sort-Object
  2. 使用 ForEach-Object 进行自定义排序
  3. 将 Get-Item 与 Sort-Object 结合使用

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯