0

我整理了一些 PowerShell 代码来搜索名称与任何文件名匹配的 PDF(在名为 $overlayTargetFilenames 的包含 Name.pdf Name2.pdf Name3.pdf 的值数组中)但完全匹配:

$matchedDrawings = Get-ChildItem $basePath -Directory -Force -Exclude 'Undesired 1','Undesired 2' | Get-ChildItem -Directory -Force | Get-ChildItem -Force -Recurse -Include '*.pdf' | where {$_.FullName -like '* A Target Subfolder\*' -and $_.FullName -notmatch "\\OLD" -and $_.Name -iin $overlayTargetFilenames} | sort($_.basename) | ForEach-Object {$_.FullName}

我要做的是弄清楚如何对值数组具有通配符的PDF进行类似的搜索,例如如何制作-iin(这是不区分大小写的“IN”运算符,-icontains的反向参数顺序)像 -ilike 对通配符一样工作。

如果 $overlayTargetFilenames 具有诸如 Name_* Name-2_* More-Name3_* 之类的值,我必须如何修改上面的代码才能工作——寻找以这些不同搜索开头的任何基本名称?搜索的名称是由代码较早生成的,并且列表大小变化很大。

我试过-iin和-ilike。

4

2 回答 2

1

您可以对通过管道传输到Foreach-Object. 对于可能具有特殊正则表达式字符的值,您可以使用Escape().NET Regex 类中的方法。结果将是一个字符串,其中包含正则表达式所需的所有转义字符。

$Collection | Foreach-Object {
    $regex = [Regex]::Escape($_)
}
于 2019-08-20T17:31:53.493 回答
0

不,-in运营商不支持通配符;它基本上枚举和检查类似于-eq. 如果你想要通配符,你需要自己迭代并使用-like.

于 2019-07-25T14:17:48.793 回答