Получить список файлов рекурсивно по скорости в PowerShell - PullRequest
2 голосов
/ 20 июля 2009

Как вы можете перечислить все файлы (рекурсивно) в каталоге, где скорость передачи файлов (аудио) превышает 32 Кбит / с, используя powershell?

Ответы [ 4 ]

3 голосов
/ 28 февраля 2010

Начиная с ссылки ( новое местоположение ссылки ) из сообщения Йоханнеса , здесь есть простая функция, которая использует 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 }
  }
}
2 голосов
/ 20 июля 2009

Ну, первая часть определенно будет Get-ChildItem -Recurse. Однако для скорости передачи данных вам понадобится больше сценариев. Сценаристы Microsoft недавно ответили на вопрос: Как найти метаданные файлов . Вы, вероятно, можете использовать это, чтобы получить аудио скорость и фильтр для этого.

1 голос
/ 20 июля 2009

В общем, если вы хотите сделать что-то, что, как вы знаете, изначально поддерживается встроенным компонентом Windows, самым быстрым маршрутом, вероятно, будет COM. Джеймс Брандейдж (David Brundage) написал отличную статью о том, как открыть эти возможности на лету и быстро использовать их.

0 голосов
/ 04 февраля 2011

Великолепный Император! Я понял, что у меня есть некоторые MP3-файлы 56K, которые я должен заменить на лучшее качество (хех, они были разорваны, когда приводы измерялись сотнями мегабайт, а не гигабайтами, было важно сэкономить место!) И сегодня утром я подумал, что мне, вероятно, стоит увидеть если есть способ сделать это под Powershell (раньше у меня была программа EDIR, которая получала бы эту информацию из файлов, но это было еще во времена Win 95 ...), и эта страница была первым хитом под powershell ИЛИ монада mp3 извлечение битрейта. Разговор о том, как вам повезло!

Я мог бы также решить изменить это, чтобы я мог пройти и выбрать все обои с 16: 9, 16:10 или около того, если не что иное, просто классифицировать их. 16: 9-10, 4: 3 (портрет), 9-10: 16, 3: 4 (пейзаж), квадрат и др. Звучит как план для меня (ха!) В свободное время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...