很多朋友都是按照專輯名稱來分文件夾保存mp3文件,即同一張專輯的mp3存在一個的目錄下。但是隨著收藏的音樂專輯越來越多,我們很希望把每張專輯的mp3分別制成一個播放列表,方便欣賞音樂?墒,這種專門的軟件很少,而且大多不是免費的。其實我們可以用VB6來輕松實現這一功能。
現在流行的播放列表文件格式有.m3u,.pls,.asx等,這里只探討這三種播放列表的自動生成辦法。
一、實現原理
1、用記事本打開一個非空的m3u播放列表文件,形如下面的格式
File0=第一個mp3文件的路徑
File1=第二個mp3文件的路徑
…………
這樣,可以用vb6的open、print等命令寫入文件,做成播放器能夠識別的.m3u格式的文件。同理,經過VB6的字符串處理后可以生成播放器能夠識別的.pls和.asx文件。
2、利用vb6的FSO對象,實現對子目錄的遍歷(本文只遍歷一層子目錄)
3、利用字符串處理函數完成對非MP3、WMA文件的過濾
二、窗體設計
本程序需要使用一個Label、一個TextBox文本框、三個Command按鈕,布局好的窗體見圖1。點擊Command1就可以生成.pls格式的列表,點擊Command2可以生成asx格式的播放列表,而點擊Command3會生成m3u格式的列表。

圖1
TextBox讓用戶輸入mp3專輯目錄的路徑。
注:以本程序為例mp3專輯目錄的路徑為D:\test\albumlist,在“albumlist”目錄下,每張專輯占用一個目錄,如“album1”目錄下為music1.mp3,music2.mp3……在你的電腦上運行本程序時,需要按照類似的目錄結構在text框中輸入目錄結構。
三、代碼編寫
為了調用fso,需要在“工具”-“引用”中選擇“Microsoft Scripting Runtimes”一項。
Dim fso1 As New FileSystemObject
Private Sub Command1_Click()
Set fso2 = fso1.GetFolder(Text1.Text) ‘根據text1中輸入的路徑獲得目錄
For Each f1 In fso2.SubFolders ‘遍歷母目錄下所有子目錄
Open f1.Path + "\" + f1.Name + "_播放列表.asx" For Output As #1 ‘在子目錄下創建列表文件
Print #1, "
Set fso3 = fso1.GetFolder(f1.Path)
For Each f2 In fso3.Files ‘遍歷每個子目錄下的音樂文件
tzm = LCase(Right(f2.Name, Len(f2.Name) - InStrRev(f2.Name, "."))) ‘獲得每個文件拓展名
If tzm = "mp3" Or tzm = "wma" Then ‘過濾掉非mp3、wma文件
Print #1, "
End If
Next
Print #1, "
Close #1 ‘ 關閉文件
Next
MsgBox ("指定文件夾下的 .asx 播放列表生成完畢")
End Sub
Private Sub Command2_Click()
Set fso2 = fso1.GetFolder(Text1.Text) ‘根據text1中輸入的路徑獲得目錄
For Each f1 In fso2.SubFolders ‘遍歷母目錄下所有子目錄
Open f1.Path + "\" + f1.Name + "_播放列表.pls" For Output As #1 ‘在子目錄下創建.pls列表文件
Set fso3 = fso1.GetFolder(f1.Path)
i = 0
For Each f2 In fso3.Files ‘遍歷每個子目錄下的音樂文件
tzm = LCase(Right(f2.Name, Len(f2.Name) - InStrRev(f2.Name, ".")))
If tzm = "mp3" Or tzm = "wma" Then
Print #1, "File" & i & "=" & f1.Path & "\" & f2.Name ‘將當前文件路徑按照asx的列表格式寫入到文件中
End If
i = i + 1 ‘計數器加一
Next
Close #1 ‘關閉文件
Next
MsgBox ("指定文件夾下的 .pls 播放列表生成完畢")
End Sub
生成.m3u播放列表文件的方法與生成,pls類似,這里不再給出,完整程序請參考源代碼
下載程序源代碼
編寫好代碼后按F5運行,輸入MP3所在目錄,點擊按鈕,即可自動生成對應格式的播放列表了。
四、提升
1、本文各張專輯的播放列表都保存在相應的目錄下,如果想讓所有列表文件保存在特定文件夾下如C盤,只需將Open f1.Path + "\" + f1.Name + "_播放列表.pls" For Output As #1
一行更改為Open "c:" + "\" + f1.Name + "_播放列表.pls" For Output As #1
2、本文程序只列舉輸入文件夾下一層子文件夾中的mp3文件并生成列表,大家可以想辦法讓他遍歷所有層的子文件夾。
本程序在WindowsXp(SP2),VB6(SP6)下調試通過.
