返回列表 发帖

[问题求助] [已解决]VBS如何根据歌单判断所缺歌曲并写入id3v1&v2信息?

本帖最后由 batsealine 于 2013-5-4 09:51 编辑

举例说明,在某文件夹下有:
│  保证.mp3
│  愿牵你的手.mp3
│  爱不死.mp3
│  男人眼泪.mp3
│  
└─刘德华
        因为爱.txt
-----------
因为爱.txt:
保证
愿牵你的手
男人眼泪
爱不死
该怎么才知道
太多太多的抱歉
朱颜记
随风而去
如果看到她,请告诉我
为了你干杯
铁了心爱你
因为爱
-------------------------------------------------------------------------------------------
现想在歌曲同目录下写一个vbs,能将所缺歌曲写入result.txt,其格式如下,并为已有的歌曲写入id3信息,这个写入方法在本论坛已找到。
刘德华 :
  因为爱 :
    该怎么才知道.mp3
    太多太多的抱歉.mp3
    朱颜记.mp3
    随风而去.mp3
    如果看到她,请告诉我.mp3
    为了你干杯.mp3
    铁了心爱你.mp3
    因为爱.mp3
modifyMp3Tags "D:\a.mp3"
sub modifyMp3Tags(file)
set wmp = CreateObject("WMPlayer.ocx")
set oMedia = wmp.newMedia(file)
oMedia.setItemInfo "author", "歌手"
oMedia.setItemInfo "title", "标题"
oMedia.setItemInfo "WM/AlbumTitle", "专辑"
set wmp = Nothing
end sub
'"歌手"不能直接是刘德华,而是文件夹变量
'"标题"即为歌曲名
'"专辑"显然也不能直接是因为爱,而是对应的txt文件名COPY
这个vbs个人觉得还是很实用的,因为我常想将某歌手全部的歌曲下载下来,这样可以很容易判断还差哪些歌并规范id3信息。刚接触vbs,也想借此提高水平。
以前用bat配合id3tool写过同一东西,但id3tool只能改变id3v1信息。不过还是贴上来吧
@echo off&setlocal EnableDelayedExpansion
for /f "delims=" %%i in ('dir /a:d/b') do (
    echo. &echo. &echo %%i :
    for /f "delims=" %%j in ('dir /a-d/b "%%i\*.txt"') do (
      echo   %%~nj :
      for /f "usebackq delims=" %%k in ("%%i\%%j") do (
        if exist "%%k.mp3" (
          id3tool "%%k.mp3" -a "%%~nj" -r "%%i" -t "%%k" "%%k.mp3"
        ) else (
          echo     %%k.mp3
        )
      )
    )
  )>>result.txt
  pauseCOPY
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

非常感谢,very cool

TOP

回复 2# czjt1234


    在遍历专辑文件时怎么加一个属性限制,否则若在歌手文件夹内有其它文件时会发生错误

TOP

回复 5# czjt1234


    嗯,这样是可以,不过能不能通过正则直接遍历到所有的txt文件

TOP

回复 7# czjt1234


    就是不用
If Lcase(Split(objFile.Name, ".")(1)) = "txt" Then
End IfCOPY
这一句,直接让objFile代表所有的txt文件。

TOP

了解了解,最后再次感谢大家

TOP

返回列表