PowerShell 将数组与两个通配符变量匹配

PowerShell match array to two wildcard variables

提问人:Fitzgery 提问时间:7/21/2023 更新时间:7/21/2023 访问量:24

问:

下午,我正在编写一些代码来验证数组是否包含两个特定的文件扩展名,并且在完成此操作时遇到了障碍。

我正在使用 Windows 窗体 OpenFileDialog 窗口并返回值 我想做的是验证所选文件(数组)是否包含(用于测试目的)a 和 a,然后再继续。我试过搞砸,但这适用于完全匹配,我玩过正则表达式,但这仍然让我感到困惑。$Files = $OpenFileDialog.FileNames.txt.log-Contains

我试图检查的是没有选择两个或文件,每个只有一个,所以我认为循环不会像那样工作(也许会,我的大脑今天不想再工作了).txt.log

数组 PowerShell 匹配

评论

0赞 Santiago Squarzon 7/21/2023
如果您使用的是 ,而不是比较,为什么不阻止任何其他扩展可用呢?此类已具有筛选器OpenFileDialog
0赞 Fitzgery 7/21/2023
我已经过滤了它以显示我想要的内容,但我希望他们一次选择多个文件,但不希望他们选择两个相同的扩展名
0赞 Santiago Squarzon 7/21/2023
我明白了,好吧,这是有道理的

答:

2赞 Santiago Squarzon 7/21/2023 #1

可以使用 GetExtension 方法获取扩展名和计算表达式,然后筛选组的计数大于的位置,如果有任何结果,则可以确保用户选择了 2 个或更多具有相同扩展名的文件。Group-Object1

例:

$result = @(
    'foo.txt'
    'bar.log'
    'baz.txt'
) | Group-Object { [System.IO.Path]::GetExtension($_) } |
    Where-Object Count -GT 1

if ($result) {
    # here is for the user selected 2 or more files with the same extension
}

评论

1赞 Fitzgery 7/21/2023
这是一个炎热的一分钟,但一如既往,感谢您的帮助!像魅力一样工作