我有一个较大的脚本的简单摘录,基本上,我正在尝试进行递归文件搜索,包括子目录(以及排除项的任何子项)。

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/

10-13 07:51