我试图在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/