| |
| |
| |
| |
| Dim i, sArgs |
| For i = 1 To WScript.Arguments.Count |
| sArgs = sArgs & " " & """" & WScript.Arguments(i-1) & """" |
| Next |
| |
| |
| |
| Dim WH |
| Set WH = GetObject("Winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery("Select * from Win32_DesktopMonitor") |
| For Each aWH in WH |
| TW = Int(aWH.ScreenWidth/8) |
| Next |
| Set WH = Nothing |
| If TW <= 0 Then |
| TW =128 |
| End If |
| If (Lcase(Right(Wscript.FullName,11)) = "wscript.exe") Then |
| CreateObject("WScript.Shell").Run( _ |
| "%Comspec% /c " & Chr(34) & "mode con cols=" & TW & "&Title 音乐文件信息修正工具 - 修正ID3、文件名 by Yu2n@qq.com &&Cscript.exe //NoLogo " & _ |
| Chr(34) & Wscript.ScriptFullName & Chr(34) & sArgs & Chr(34) & "&pause"),3 |
| Wscript.Quit |
| End If |
| |
| |
| |
| Dim sFilePath, sFileFolder, sFileName, sFileExt |
| If WScript.Arguments.Count = 0 Then |
| WScript.Echo "提示:错误的启动方式。要使用本程序,请用鼠标拖放一个或多个音乐文件到本程序图标上……" |
| WScript.Quit |
| Else |
| Dim sMsg |
| For i = 0 To WScript.Arguments.Count - 1 |
| sFilePath = WScript.Arguments(i) |
| |
| On Error Resume Next |
| |
| Call CorrectionsID3(sFilePath) |
| |
| If Err.Number <> 0 then |
| WScript.Echo " 错误代号 " & Err.Number & "," & Err.Description & "。" |
| End If |
| |
| On Error Goto 0 |
| |
| WScript.Echo vbCr |
| Next |
| End If |
| |
| |
| Function CorrectionsID3(ByVal sFilePath) |
| |
| |
| Dim objFSO |
| Set objFSO = CreateObject("Scripting.FileSystemObject") |
| If Not objFSO.FileExists(sFilePath) Then Exit Function |
| sFileFolder = objFSO.GetFile(sFilePath).ParentFolder & "\" |
| sFileExt = "." & objFSO.GetExtensionName(sFilePath) |
| sFileName = objFSO.GetFile(sFilePath).Name |
| |
| WScript.Echo "文 件:" & sFileName |
| |
| If sFileExt = "." Then |
| sFileExt = "" |
| WScript.Echo "[失败] 无修正。 不支持该文件格式。" |
| Exit Function |
| Else |
| sFileName = Left(sFileName, Len(sFileName) - Len(sFileExt)) |
| End If |
| |
| |
| |
| Dim sFileArtist, sFileTitle |
| If InStr(1, sFileName, "-", vbTextCompare) > 0 Then |
| sFileArtist = Trim(Mid(sFileName, 1, InStr(sFileName, "-") - 1)) |
| sFileTitle = Trim(Mid(sFileName, InStr(sFileName, "-") + 1)) |
| End If |
| If sFileArtist = "" Or sFileTitle = "" Then |
| sFileArtist = "" : sFileTitle = "" |
| End If |
| |
| |
| Dim objWMP, objSong, sID3Artist, sID3Title |
| Set objWMP = CreateObject("WMPlayer.OCX") |
| Set objSong = objWMP.newMedia(sFilePath) |
| sID3Artist = Trim(objSong.GetItemInfo("Artist")) |
| sID3Title = Trim(objSong.GetItemInfo("Title")) |
| sDuration = objSong.GetItemInfo("Duration") |
| If sDuration = "" Then |
| WScript.Echo "[失败] 无修正。 不支持该文件格式。" |
| Exit Function |
| End If |
| If sID3Artist <> "" Then |
| sID3Artist = Replace(sID3Artist, "&", ", ", vbTextCompare, -1, 1) |
| sID3Artist = Replace(sID3Artist, "?", "", vbTextCompare, -1, 1) |
| WScript.Echo " 艺术家:" & sID3Artist |
| End If |
| If sID3Title <> "" Then |
| sID3Title = Replace(sID3Title, "?", "", vbTextCompare, -1, 1) |
| WScript.Echo " 标 题:" & sID3Title |
| End If |
| If sID3Artist = "" Or sID3Title = "" Then |
| sID3Artist = "" : sID3Title = "" |
| End If |
| |
| |
| If sFileArtist = "" And sFileTitle = "" And _ |
| sID3Artist = "" And sID3Title = "" Then |
| WScript.Echo "[失败] 无修正。 信息不全。" |
| Exit Function |
| End If |
| |
| |
| If Not (sFileArtist = sID3Artist And sFileTitle = sID3Title) Then |
| |
| |
| If sFileArtist <> "" And sFileTitle <> "" And _ |
| sID3Artist <> "" And sID3Title <> "" Then |
| sAsk = " 文件名称 “" & sFileName & sFileExt & "” 与 ID3 信息冲突,请选择:" & vbCrLf & vbCrLf & _ |
| " [ 是(Y) ] 将文件改名为:" & vbCrLf & _ |
| " " & sID3Artist & " - " & sID3Title & sFileExt & vbCrLf & vbCrLf & _ |
| " [ 否(N) ] 修改文件的ID3信息为:" & vbCrLf & _ |
| " 作者:" & sFileArtist & vbCrLf & _ |
| " 标题:" & sFileTitle & vbCrLf & vbCrLf & _ |
| " [ 取消 ] 不作变更" |
| WScript.Echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" |
| WScript.Echo sAsk |
| WScript.Echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" |
| Select Case MsgBox(sAsk, vbYesNoCancel, "音乐文件信息修正工具 - 修正ID3、文件名") |
| Case vbYes |
| sFileArtist = "" |
| sFileTitle = "" |
| Case vbNo |
| sID3Artist = "" |
| sID3Title = "" |
| Case Else |
| Exit Function |
| End Select |
| End If |
| |
| End If |
| |
| |
| If (sFileArtist <> "" And sFileTitle <> "") And _ |
| (sID3Artist = "" Or sID3Title = "") Then |
| |
| sID3Artist = sFileArtist |
| sID3Title = sFileTitle |
| With objSong |
| |
| .setItemInfo "artist", Trim(sID3Artist) |
| .setItemInfo "title", Trim(sID3Title) |
| |
| |
| |
| |
| |
| |
| End With |
| WScript.Echo "[成功] 已修正。 艺术家:" & Trim(objSong.GetItemInfo("Artist")) |
| WScript.Echo "[成功] 已修正。 标 题:" & Trim(objSong.GetItemInfo("Title")) |
| End If |
| |
| |
| objSong.setItemInfo "Description", "Yu2n@qq.com corrections ID3 information on " & Now() |
| Set objSong = Nothing |
| Set objWMP = Nothing |
| |
| |
| If sID3Artist <> "" And sID3Title <> "" Then |
| Dim sFilePath2 |
| sFilePath2 = sFileFolder & sID3Artist & " - " & sID3Title & sFileExt |
| If sFilePath <> sFilePath2 Then |
| objFSO.MoveFile sFilePath, sFilePath2 |
| WScript.Echo "[成功] 已修正。 文件名:" & sID3Artist & " - " & sID3Title & sFileExt & " 。" |
| Else |
| WScript.Echo "[失败] 无修正。 文件名与ID3信息一致,不作变更。(或该文件部分损坏无法识别)" |
| End If |
| End If |
| Set objFSO = Nothing |
| |
| End FunctionCOPY |