如何从powershell中的扩展类型数组中提取/匹配文件类型扩展

Vis*_*hwa 2 arrays powershell

我想使用Powershell从Sharepoint库中仅提取所需的文件类型

我正在使用以下逻辑,但它无法正常工作.它仍然匹配文件名包含扩展类型,这是不好的.

请帮我纠正脚本.

$libfiles = ".pptx",".xlsx",".xls",".docx",".doc",".pdf",".jpeg",".jpg",".ppt",".xlsm",".gif",".png"
$libfilesregex = [string]::Join('|', $libfiles)
$arr = @("xlsfile.avi","asxlsxfile.mdf","navigation.css")
foreach($i in $arr)
{
    if($i -match $libfilesregex)
    {
        Write-Host " $($i) File type exists "
    }
    else
    {
        Write-Host " $($i) File type does not exist "
    }
}
Run Code Online (Sandbox Code Playgroud)

它正在输出:

xlsfile.avi文件类型不存在

asxlsxfile.mdf文件类型存在

navigation.css文件类型不存在

注意如何报告不存在,但asxlsxfile.mdf出乎意料的是.

谢谢Vishwa

jdw*_*wal 6

我相信这就是你要找的东西.我明确地从文件数组中提取文件扩展名,并在扩展名存在时打印.

$libfiles = ".pptx",".xlsx",".xls",".docx",".doc",".pdf",".jpeg",".jpg",".ppt",".xlsm",".gif",".png"
$arr = @("xlsfile.avi","asxlsxfile.mdf","navigation.css", "lib.pptx")
foreach($i in $arr)
{
    if($libfiles -contains [io.path]::GetExtension($i))
    {
        Write-Host  "$([io.path]::GetExtension($i)) File type exists "
    }
    else
    {
        Write-Host "$([io.path]::GetExtension($i)) File type does not exist "
    }
}
Run Code Online (Sandbox Code Playgroud)

  • ++是一种实用的方法,它可以解决正则表达式问题.我建议你在两个方面使你的代码更像PowerShell:使用`-contains`操作符而不是`.Contains()`方法,并删除``io.path周围不必要的`$(...)`包装器] :: GetExtension()`call:`if($ libfiles -contains [io.path] :: GetExtension($ i)){...` (2认同)
  • 感谢您对我的帖子的建设性反馈.将来我一定会相应调整我的代码. (2认同)