首页 > 解决方案 > 如何在powershell中返回具有相同扩展名但包含特定名称结尾的文件?

问题描述

一个项目文件夹中有多个 .webp 文件。一些.webps 是原始图片,一些用作缩略图(它们的大小不同)。使用的命名约定是:原始文件仅称为 NAME.webp,而缩略图则为 NAME-thumb.webp。我正在尝试创建一个 Powershell 脚本,该脚本根据原始文件创建日期返回所有 -thumb.webp 文件。因此,如果今天创建了原始文件,则返回相应的 -thumb.webp(除了 -thumb 之外,它们具有相同的基本名称

到目前为止,这是我尝试过的,但仍有一些问题:

$webps = (Get-ChildItem -Path $dir -Filter '*.webp' -File | Where-Object { $_.CreationTime -gt $refdate }).BaseName
$output = Get-ChildItem -Path $dir -Filter '*.webp' -File | Where-Object { $webps -contains ($_.BaseName + "-thumb") }

标签: powershellget-childitem

解决方案


Get-ChildItem $dir\*.webp -Exclude *-thumb.webp -File | 
    Where-Object CreationTime -gt $refdate | 
    ForEach-Object { $_.Fullname -replace '\.webp$', '-thumb.webp' }

首先我们得到所有 * .webp文件,不包括 * -thumb.webp文件。使用Where-Object我们只选择CreationTime大于$refdate. 最后,我们将.webp替换为-thumb.webp以返回缩略图文件的完整路径。

如果您只需要文件名,请替换$_.Fullname$_.Name.


推荐阅读