我试图在Powershell中编写一个脚本,以匹配文件名的扩展名。这是我到目前为止所拥有的:

$location = $args[0];

[String]$extensions = @(".mkv", ".mp4", ".avi", ".wmv");
$pruneSize = 41240000;

Set-Location $location;

Get-ChildItem -Recurse | ForEach-Object {
    If($extensions -contains $_.Extension) {
        Write-Host "Found it";
    }
    else {
        Write-Host $_.Extension not found in $extensions;
    }
}

这是输出:
.mp4 not found in .mkv .mp4 .avi .wmv
.bat not found in .mkv .mp4 .avi .wmv
.bat not found in .mkv .mp4 .avi .wmv

因此,似乎应该可以,但不能。如果我将“-contains”切换为“-match”,那么它可以工作,尽管我不想使用match,因为看起来-contains应该是我真正想要的,并且对于我所需要的更为准确。我是否缺少一些Powershell的怪癖?

谢谢!

最佳答案

尝试从[String]之前删除$extensions

关于arrays - 无法获得-Powershell中包含的内容可以按预期工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24844009/

10-12 22:09