我有一个pdf文件名列表,这些文件已逐行存储在文本文件中,如下所示。
322223491.pdf
322223492.pdf
322223493.pdf
文本文件的名称为inclusions.txt
。
我将其传递给变量:
$inclusion = get-content .\inclusions.txt
现在我要检查并显示文件夹(C:\users\xyz
)中是否包含$inclusions
变量中传递的文件,我该怎么做?
PS C:\users\xyz> Get-childitem
命令显示以下内容
Mode LastWritetime Name
该Name
列是我感兴趣的属性,在这里我想比较我的包含列表,如果在列表中找到它,那么我想在Powershell终端中显示它们
PS C:\users\xyz> Get-childitem | Select-Object -Property Name
据我所知,我不知道如何通过将其与$inclusions
变量进行比较来进一步显示过滤后的数据。
此外,如果它们与包含文本文件中的名称匹配,我想删除这些文件。因此,如果名称与包含列表中的名称相同,则遍历该文件夹中的所有文件的最终目标就是进行比较,如果是,则删除这些特定文件。
任何帮助,将不胜感激。
非常感谢
使用Where-Object
到过滤器上的条件:
Get-ChildItem |Where-Object { $inclusion -contains $_.Name }
如果您只对文件名本身感兴趣,可使用Select-Object -ExpandProperty
来仅获取每个文件的名称:
Get-ChildItem |Where-Object { $inclusion -contains $_.Name } |Select-Object -ExpandProperty Name
如果要基于某个文件夹是否包含中的一个或多个文件来执行操作$inclusion
,请使用以下if
语句:
$folderPath = "C:\users\xyz\folder\of\interest"
if(@(Get-ChildItem $folderPath |Where-Object {$inclusion -contains $_.Name}).Count -ge 1)
{
Write-Host "Folder $folderPath contains at least one of the inclusion files"
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句