很抱歉转储问题,因为我是PowerShell的初学者。我们有很多文件进入一个目录,它们总是在该目录中增加和减少,因为在我们使用它们之后它被移动到另一个目录。
我们在txt文件中有一个优先级文件列表,该文件只有文件名的部分名称。
例如,对于文件名:
2017年6月5日--- 666-12-05-01.txt
在优先级列表中,我的部分名称为---666---
。
如何使用Powershell检查文件夹中的文件是否已在优先级列表中?
我编写了以下脚本,因为我只需要比给定时间更早的文件。但它没有用。
Get-ChildItem -path $Struct.Path -filter $Struct.filter |
Where-Object {$_.CreationTime -lt $time} |
Where-Object {$_.Name -contains "*$PriorityList*"} |
ForEach-Object { $counterP++}
答案 0 :(得分:0)
首先,示例中的文件名与部分名称不匹配。因此,我们假设模式为"666"
。如果您有多种模式,可以将它们连接到一个过滤器中:
$PriorityList = "---666---","---555---"
$PriorityFilter = $PriorityList -join '|'
然后使用此过滤器检查Name属性:
Get-ChildItem -path $Struct.Path -filter $Struct.filter |
Where-Object {$_.CreationTime -lt $time} |
Where-Object {$_.Name -match $PriorityFilter |
ForEach-Object { $counterP++}
-contains
运算符使用集合作为左操作数,不接受通配符进行匹配。
答案 1 :(得分:0)
我已更新您的代码,现在它正常运行
Get-ChildItem -path $Struct.Path -filter $Struct.filter |
Where-Object {$_.CreationTime -lt $time} | ForEach-Object { If($_.name -
Match $Priorfilter) { $counterP++ }