我有一个较大的脚本的简单摘录,基本上,我正在尝试进行递归文件搜索,包括子目录(以及排除项的任何子项)。
clear
$Exclude = "T:\temp\Archive\cst"
$list = Get-ChildItem -Path T:\temp\Archive -Recurse -Directory
$list | where {$_.fullname -notlike $Exclude} | ForEach-Object {
Write-Host "--------------------------------------"
$_.fullname
Write-Host "--------------------------------------"
$files = Get-ChildItem -Path $_.fullname -File
$files.count
}
目前,此脚本将排除 T:\ temp \ Archive \ cst 目录,但不包括 T:\ temp \ Archive \ cst \ artwork 目录。我正在努力克服这一简单的问题。
我尝试了-不像(我本来没想到会工作),但也尝试了-不包含我希望的。
任何人都可以提供任何建议,我认为这需要正则表达式匹配,我现在正在阅读,但不是很熟悉。
将来 $ exclude 变量将是一个字符串(目录)数组,但此刻只是试图使其与直字符串一起工作。
最佳答案
尝试:
where {$_.fullname -notlike "$Exclude*"}
您也可以尝试
where {$_.fullname -notmatch [regex]::Escape($Exclude) }
但这种方式并不容易。
关于regex - Powershell 'where'语句-notcontains,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20412043/