This is a trick which got famous at the PowerShell Bangalore User Group (PSBUG) session.
Little trick to play a single random song provided VLC (or any other player) is set as default player for the .mp3 files:
Posh (0002) > Get-ChildItem -Path 'F:\songs\movies neew' -Include *.mp3 -Recurse | Get-Random -Count 1 | Invoke-Item
But this won't create a playlist for you if you simply increased the count for Get-Random..try this
Posh (0003) > Get-ChildItem -Path 'F:\songs\movies neew' -Include *.mp3 -Recurse | Get-Random -Count 2 | Invoke-Item
Let's try creating a playlist this time ( have to set VLC as the default player for .mp3 files , thus creating filetype associations for .mp3 files)
You need get all the possible list values for mp3 extension.I read this excellent article by David Moravec at PowerShellMagazine to list all possible verb values for a particular extension.
After you go through the above mentioned article, you just use the below code to get a list of all extensions and the list of verbs associated with them
001
002 003 004 005 |
cmd /c assoc |
ForEach { $ext = ($_ -split '=' )[0 ]; "{0}: {1}" -f $ext, (( New-Object System.Diagnostics.ProcessStartInfo -ArgumentList "test$ext" ).Verbs -join ', ' ) }| Out-GridView -Title 'Verb values for associated extensions' |
Now on the Out-Gridview window filter out using ".mp3" and see the list of verbs that we have
Now we have all the ingredients ready, First we get a list of all .mp3 files in a directory then randomly get 5 files out of it and at last foreach of those 5 files we start a process with the -verb parameter taking an argument of 'AddtoPlaylistVLC'
001
002 003 004 005 006 |
get-childitem -Path 'F:\songs\movies neew' -Filter *.mp3 -Recurse | Get-Random -Count 5 | Foreach { Start-Process -FilePath $_.Fullname -verb 'AddtoPlaylistVLC' } |
Wait and watch :)