对于每个正在处理的文件,都会检查其名称是否满足条件。例如,给定以下过滤器列表:
$excludeFiles = @"
aaa.bbb
ccccc.*
ddddd???.exe
"@ | SplitAndTrim;
如果文件与任何行匹配,则应将其排除在处理之外。尽量避免 match/regex
,因为这个脚本需要由不知道它的人修改,并且有几个地方需要实现。
$excludedFiles
和类似的内容被故意定义为此处字符串。它允许最终用户/运算符(operator)直接从 CMD/Powershell 窗口粘贴一堆文件名。
Powershell 似乎不接受数组的 -like
,所以我不能这样写:
"ddddd000.exe" -like @("aaa.bbb", "ccccc.*", "ddddd???.exe")
我错过了一个选项吗?如果 Powershell 本身不支持,那么最简单的实现方法是什么?
最佳答案
这是已接受答案中模式的简短版本:
($your_array | %{"your_string" -like $_}) -contains $true
应用于OP中获得的案例
PS C:\> ("aaa.bbb", "ccccc.*", "ddddd???.exe" | %{"ddddd000.exe" -like $_}) -contains $true
True
关于arrays - Powershell - LIKE 针对数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13019218/