1

如何使用powershell列出文件(音频)比特率大于32kbps的目录中的所有文件(递归)?

4

4 回答 4

3

从Johannes 的帖子中的链接新链接位置)开始,这是一个简单的函数,用于在具有最低比特率的目录中查找所有 mp3 文件:GetDetailsOf

function Get-Mp3Files( [string]$directory = "$pwd", [int]$minimumBitrate = 32 ) {
  $shellObject = New-Object -ComObject Shell.Application
  $bitrateAttribute = 0

  # Find all mp3 files under the given directory
  $mp3Files = Get-ChildItem $directory -recurse -filter '*.mp3'
  foreach( $file in $mp3Files ) {
    # Get a shell object to retrieve file metadata.
    $directoryObject = $shellObject.NameSpace( $file.Directory.FullName )
    $fileObject = $directoryObject.ParseName( $file.Name )

    # Find the index of the bit rate attribute, if necessary.
    for( $index = 5; -not $bitrateAttribute; ++$index ) {
      $name = $directoryObject.GetDetailsOf( $directoryObject.Items, $index )
      if( $name -eq 'Bit rate' ) { $bitrateAttribute = $index }
    }

    # Get the bit rate of the file.
    $bitrateString = $directoryObject.GetDetailsOf( $fileObject, $bitrateAttribute )
    if( $bitrateString -match '\d+' ) { [int]$bitrate = $matches[0] }
    else { $bitrate = -1 }

    # If the file has the desired bit rate, include it in the results.
    if( $bitrate -ge $minimumBitrate ) { $file }
  }
}
于 2010-02-27T21:25:50.277 回答
2

好吧,第一部分肯定是Get-ChildItem -Recurse. 但是,对于比特率,您需要更多的脚本。Microsoft Scripting Guys 不久前回答了一个问题:我如何找到文件的元数据。您可能可以使用它来获取音频比特率并对其进行过滤。

于 2009-07-20T15:03:00.637 回答
1

一般来说,如果你想做一些你知道内置 Windows 组件原生支持的事情,最快的途径可能是 COM。 James Brundage 有一篇很棒的文章,介绍了动态发现这些功能并快速使用它们。

于 2009-07-20T15:10:51.950 回答
0

了不起的皇帝!我意识到我有一些 56K MP3 应该换成更好的质量(嘿,当驱动器以数百兆而不是演出来衡量时,它们被撕裂了,重要的是节省空间!)我想今天早上我可能应该看到如果有办法在 Powershell 下做到这一点(我曾经有一个名为 EDIR 的程序可以从文件中获取该信息,但那是在 Win 95 的时代......),这个页面是 powershell 下的第一个点击OR monad mp3 比特率提取。谈论幸运!

我还可以想办法改变它,这样我就可以浏览并挑选所有 16:9、16:10 或左右的壁纸,如果没有别的只是为了对它们进行分类。16:9-10、4:3(纵向)、9-10:16、3:4(横向)、正方形等。听起来像是我(哈!)业余时间的计划。

于 2011-02-04T16:12:12.423 回答