我有对此代码感到非常满意的代码:

$jpgExtensionFiles = New-Object System.Collections.ArrayList

$AllDrives = Get-PSDrive
  foreach ($Drive in $AllDrives) {
      $Dirs = Get-ChildItem $Drive.Root -Recurse -ErrorAction SilentlyContinue
      $jpgExtensionFiles.Add(($Dirs | where {$_.extension -eq ".jpg"}))
   }

但是现在,我想对名为$bmpExtensionFiles的数组执行相同的操作。我不知道如何执行以下操作:
  • 如果扩展名是.jpg,则将其添加到第一个数组
  • 如果扩展名是.bmp,则将其添加到第二个数组

  • ...为了效率着想,所有这些都在一个循环中。我知道我可以只添加$bmpExtensionFiles.Add(($Dirs | where {$_.extension -eq ".bmp"})),但是有没有更有效的方法?我需要与PowerShell v2兼容。

    最佳答案

    您可以使用switch语句,然后,如果以后要添加其他类型,很容易扩展:

    ForEach ($Dir in $Dirs)
    {
        Switch ($Dir.Extension)
        {
            ".jpg" {$jpgExtensionFiles.Add($Dir)}
            ".bmp" {$bmpExtensionFiles.Add($Dir)}
        }
    }
    

    10-08 02:31