[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创] VBS获取音频文件属性信息并重命名

&&相信大家都有过这样的经历,从网上批量下歌曲时得到的文件名并不是我们所想要的歌手+歌曲名格式,
而是一堆序列号或随机生成的字符串文件名,如001.m3、kjfdakfjfsa.wma。怎么办?其实无论文件名
怎么乱,只要它还是一个标准的音频文件,在其文件中就会含有歌手和歌名的信息,这个我们右键音频文件
的属性摘要就能看到。既然,这些信息存在于文件之中,那么能不能用什么方法获取出来并格式化地重命名
我们的音频文件呢?YES,下面的代码就是为解决这个问题而生的:
  1. Dim PathFile, Path, File, Ext
  2. If WScript.Arguments.Count = 0 Then
  3.   GetFile
  4.   Else
  5.   PathFile = WScript.Arguments(0)
  6. End If
  7. Dim objFSO
  8. Set objFSO = CreateObject("Scripting.FileSystemObject")
  9. Path = objFSO.GetFile(pathfile).ParentFolder & "\"
  10. File = objFSO.GetFile(pathfile).Name
  11. Ext = "." & objFSO.GetExtensionName(PathFile)
  12. Dim objSHELL
  13. Set objSHELL = CreateObject("Shell.Application")
  14. Dim objPath, objFile, objName, Arlt, Name
  15. Set objPath = objSHELL.NameSpace(Path)
  16. Set objFile = objPath.ParseName(File)
  17. For i = 0 To 50
  18.   If objPath.GetDetailsOf(,i) = "作者" Then Arlt = objPath.GetDetailsOf(objFile, i)
  19.   If objPath.GetDetailsOf(,i) = "标题" Then Name = objPath.GetDetailsOf(objFile, i)
  20. Next
  21. If Arlt <> "" And Name <> "" Then
  22.   objFSO.CopyFile PathFile, Path & Arlt & "_" & Name & Ext, True
  23.   objFSO.DeleteFile PathFile
  24. End If
  25. Set objFSO = Nothing
  26. Set objSHELL = Nothing
  27. Function GetFile
  28.   Dim objDIA
  29.   Set objDIA = CreateObject("Useraccounts.Commondialog")
  30.   objDIA.Filter = "mp3文件|*.mp3|wma文件|*.wma|wav文件|*.wav|所有文件|*.*|"
  31.   objDIA.InitialDir = "\.\"
  32.   objDIA.ShowOpen
  33.   PathFile = objDIA.FileName
  34.   Set objDIA = Nothing  
  35. End Function
复制代码
说明:
    1、在XP下代码支持双击选择文件类型和文件以及拖放文件,WIN7下仅支持文件拖放(蛋疼)
    2、重命名的格式为“歌手_歌名”,请根据自己需要修改
    3、本人暂时只测试了mp3、wma、wav文件,欢迎测试
    4、暂不支持批量拖入
1

评分人数

    • broly: 感谢分享技术 + 1
***共同提高***

返回列表