递归在PowerShell中的比特率获取文件列表(Get list of files recursi

2019-09-19 16:23发布

你怎么能列出一个文件所在的目录(音频)比特率比使用PowerShell 32kbps的更大范围内的所有文件(递归)?

Answer 1:

与开始链接 ( 新链接的位置距离) 约翰内斯后 ,这里是使用一个简单的函数GetDetailsOf找到用最少的比特率目录下的所有mp3文件:

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 }
  }
}


Answer 2:

好了,第一部分肯定是一个Get-ChildItem -Recurse 。 对于比特率,你就需要一些更多的脚本,但是。 Microsoft脚本专家回答该问题前一阵子: 我如何才能找到文件的元数据 。 你或许可以用它来获得的音频比特率和过滤了点。



Answer 3:

在一般情况下,如果你想你知道是原生支持一些内置的Windows组件,最快的路线很可能是COM。 詹姆斯·布伦戴奇有一个伟大的职位上飞发现这些功能,能够迅速把他们使用。



Answer 4:

惊人的皇帝! 我意识到,我有一些56K的MP3,我应该用更好的质量(嘿,当驱动器是由数百个兆,不是演出的测量,他们撕开,节省空间是最要紧的!)更换和我今天早上,我也许应该看到还以为如果有一种方式来做到这一点Powershell的下(我曾经有一个叫EDIR程序,将得到文件的信息,但是这是早在运95 ...天),而这个页面是在PowerShell中的第一击OR单子MP3比特率提取。 谈论得到幸运!

我还可以找出改变这种做法,我可以顺利通过,并挑选所有16个壁纸:9,16:10点左右,如果没有别的只是对其进行分类。 16:9-10,4:3(纵向),9-10:16,3:4(横向),正方形和其他。 听起来像在我的计划,我(哈哈!)业余时间。



文章来源: Get list of files recursively by bit rate in powershell