我正在尝试列出所有不包含与*Quick*install*.pdf
匹配的文件的子目录。
我已尝试过以下脚本,但它列出了所有目录。
$a = "F:\Test"
Get-ChildItem -Path $a -recurse *Documents* | Foreach {
Get-ChildItem -Path $a -recurse | where {$_.psiscontainer} | % {
if((Get-ChildItem -Path $_.FullName -File).name -notcontains "*Quick*install*"){
$_.FullName
}
}
}
答案 0 :(得分:1)
您的脚本将列出包含任何非QuickInstall文件的所有目录,即使它们包含QuickInstall本身也是如此。此外,它将为每个文件多次返回目录FullName。试试这个:
Get-ChildItem *documents* -Directory | ForEach-Object {
if (-not (ls $_.FullName -file -Recurse *Quick*Install*)) {
write-output $_.FullName
}
}
答案 1 :(得分:1)
假设您只想处理名称中包含Documents
的文件夹
$Base = "F:\Test"
$Search= "*Quick*install*.pdf"
Get-ChildItem -Path $Base -Recurse -Directory -Filter "*Documents*" |
Where {(Get-ChildItem -Path $_.FullName -File -Filter $Search).Count -eq 0}|
Select-Object -Expandproperty FullName
答案 2 :(得分:0)
试试这个
$Base = "F:\Test"
$Search= "*Quick*install*.pdf"
$dirtoexclude=Get-ChildItem $Base -Recurse -File -Filter $Search | select Directory
Get-ChildItem $Base -Recurse -Directory | where FullName -Notin $dirtoexclude.Directory.FullName