Dapatkan durasi lagu dari file mp3 dalam sebuah skrip?

5

Saya mencoba mendaftar beberapa file mp3 saya dengan Powershell.

saya telah mencoba

ls C:\test | Format-List -Property Name,Length

yang memberi saya

Name   : testfile.mp3
Length : 10058533

Panjangnya adalah ukuran file yang tidak saya pedulikan saat ini.

Mengetahui bahwa saya dapat memilih durasi di File Explorer untuk tajuk kolom saya pikir untuk menulis ulang di atas sebagai

ls C:\test | Format-List -Property Name,Duration

tapi yang saya dapatkan adalah

Name   : testfile.mp3

Bagaimana saya bisa memberi tahu Powershell untuk mengembalikan menit dan detik untuk durasi? Atau bahkan hanya beberapa detik. Terima kasih sebelumnya

Darius
sumber

Jawaban:

6

Untuk mendapatkan panjang mp3, mungkin cara termudah adalah dengan memanfaatkan apa yang digunakan penjelajah, Shell objekt.

Saya khawatir saya tidak punya satu kalimat untuk Anda, tetapi Anda selalu dapat membuat skrip yang Anda panggil.

$path = 'M:\Musikk\awesome_song.mp3'
$shell = New-Object -COMObject Shell.Application
$folder = Split-Path $path
$file = Split-Path $path -Leaf
$shellfolder = $shell.Namespace($folder)
$shellfile = $shellfolder.ParseName($file)

write-host $shellfolder.GetDetailsOf($shellfile, 27); 

Informasi lebih lanjut dapat ditemukan di sini: http://powershell.com/cs/blogs/tobias/archive/2011/01/07/organizing-videos-and-music.aspx

Sunting: Alasan metode ini diperlukan adalah karena informasi panjang berada dengan metadata lain dari file.

Martin
sumber
Saya tidak meminta satu-liner jadi tidak ada pengurangan di sana :) Dan ya ini memberi saya apa yang saya minta sekarang saya perlu untuk loop untuk file banyak :) Terima kasih
Darius