[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. Set objFSO = CreateObject("Scripting.FileSystemObject")
  2. set objWmp = CreateObject("WMPlayer.ocx")
  3. strFolder = CreateObject("Wscript.Shell").CurrentDirectory '指定文件夹
  4. strResult = "缺少以下歌曲:" & vbCrLf & vbCrLf
  5. Set objFolders = objFSO.GetFolder(strFolder).SubFolders
  6. For Each objFolder In objFolders '遍历所有歌手名
  7.     Set objFiles = objFSO.GetFolder(objFolder).Files
  8.     For Each objFile In objFiles '遍历所有专辑名
  9.         Set objTextStream = objFSO.OpenTextFile(objFile.Path, 1, False)
  10.         strLost = ""
  11.         Do Until objTextStream.AtEndOfStream
  12.             strLine = Trim(objTextStream.ReadLine)
  13.             If strLine = "" Then Exit Do '容错处理,遇到空行就认为文件已结束
  14.             If objFSO.FileExists(strFolder & "\" & strLine & ".mp3") Then
  15.                 Set objMp3File = objWmp.NewMedia(strFolder & "\" & strLine & ".mp3")
  16.                 objMp3File.SetItemInfo "author", objFolder.Name
  17.                 objMp3File.SetItemInfo "title", strLine
  18.                 objMp3File.SetItemInfo "WM/AlbumTitle", Split(objFile.Name, ".")(0)
  19.             Else
  20.                 strLost = strLost & Space(8) & strLine & vbCrLf
  21.             End If
  22.         Loop
  23.         If strLost <> "" Then
  24.             strResult = strResult & objFolder.Name & vbCrLf & Space(4) & _
  25.                         Split(objFile.Name, ".")(0) & vbCrLf & strLost & vbCrLf
  26.         End If
  27.     Next
  28. Next
  29. objFSO.OpenTextFile("result.txt", 2, True).WriteLine strResult
复制代码
1

评分人数


QQ 20147578

TOP

本帖最后由 czjt1234 于 2013-5-5 17:00 编辑

限制只读取txt文件,假定所有txt文件都是专辑
  1. Set objFSO = CreateObject("Scripting.FileSystemObject")
  2. set objWmp = CreateObject("WMPlayer.ocx")
  3. strFolder = CreateObject("Wscript.Shell").CurrentDirectory & "\"
  4. strResult = "缺少以下歌曲:" & vbCrLf & vbCrLf
  5. Set objFolders = objFSO.GetFolder(strFolder).SubFolders
  6. For Each objFolder In objFolders                '遍历所有歌手名
  7.     Set objFiles = objFSO.GetFolder(objFolder).Files
  8.     For Each objFile In objFiles                '遍历所有专辑名
  9.         If Lcase(Split(objFile.Name, ".")(1)) = "txt" Then
  10.             Set objTextStream = objFSO.OpenTextFile(objFile.Path, 1, False)
  11.             strLost = ""
  12.             Do Until objTextStream.AtEndOfStream
  13.                 strLine = Trim(objTextStream.ReadLine)
  14.                 If strLine = "" Then Exit Do    '遇到空行就认为文件已结束
  15.                 If objFSO.FileExists(strFolder & strLine & ".mp3") Then
  16.                     Set objMp3File = objWmp.NewMedia(strFolder & strLine & ".mp3")
  17.                     objMp3File.SetItemInfo "author", objFolder.Name
  18.                     objMp3File.SetItemInfo "title", strLine
  19.                     objMp3File.SetItemInfo "WM/AlbumTitle", Split(objFile.Name, ".")(0)
  20.                 Else
  21.                     strLost = strLost & Space(8) & strLine & vbCrLf
  22.                 End If
  23.             Loop
  24.             If strLost <> "" Then
  25.                 strResult = strResult & objFolder.Name & vbCrLf & Space(4) & _
  26.                             Split(objFile.Name, ".")(0) & vbCrLf & strLost & vbCrLf
  27.             End If
  28.         End If
  29.     Next
  30. Next
  31. objFSO.OpenTextFile("result.txt", 2, True).WriteLine strResult
复制代码

QQ 20147578

TOP

什么意思~~~~~

QQ 20147578

TOP

fso对象没这个功能

可以考虑Wscript.Shell对象运行cmd命令dir *.txt /a/b

然后读取输出的内容

不过没有必要吧,读取全部文件再判断是否是txt也不影响速度

QQ 20147578

TOP

你是担心这个啊

没问题的

QQ 20147578

TOP

啊,惭愧惭愧,考虑不周

这样

If Lcase(Right(objFile.Name, 3)) = "txt" Then

QQ 20147578

TOP

本帖最后由 czjt1234 于 2013-5-6 23:37 编辑
  1. Set objFSO = CreateObject("Scripting.FileSystemObject")
  2. set objWmp = CreateObject("WMPlayer.ocx")
  3. strFolder = CreateObject("Wscript.Shell").CurrentDirectory & "\"
  4. strResult = "缺少以下歌曲:" & vbCrLf & vbCrLf
  5. Set objFolders = objFSO.GetFolder(strFolder).SubFolders
  6. For Each objFolder In objFolders                '遍历所有歌手名
  7.     Set objFiles = objFSO.GetFolder(objFolder).Files
  8.     For Each objFile In objFiles                '遍历所有专辑名
  9.         If Lcase(Right(objFile.Name, 3)) = "txt" Then
  10.             Set objTextStream = objFSO.OpenTextFile(objFile.Path, 1, False)
  11.             strLost = ""
  12.             Do Until objTextStream.AtEndOfStream
  13.                 strLine = Trim(objTextStream.ReadLine)
  14.                 If strLine = "" Then Exit Do    '遇到空行就认为文件已结束
  15.                 If objFSO.FileExists(strFolder & strLine & ".mp3") Then
  16.                     Set objMp3File = objWmp.NewMedia(strFolder & strLine & ".mp3")
  17.                     objMp3File.SetItemInfo "author", objFolder.Name
  18.                     objMp3File.SetItemInfo "title", strLine
  19.                     objMp3File.SetItemInfo "WM/AlbumTitle", Left(objFile.Name, Len(objFile.Name) - 4)
  20.                 Else
  21.                     strLost = strLost & Space(8) & strLine & vbCrLf
  22.                 End If
  23.             Loop
  24.             If strLost <> "" Then
  25.                 strResult = strResult & objFolder.Name & vbCrLf & Space(4) & _
  26.                             Left(objFile.Name, Len(objFile.Name) - 4) & vbCrLf & strLost & vbCrLf
  27.             End If
  28.         End If
  29.     Next
  30. Next
  31. objFSO.OpenTextFile("result.txt", 2, True).WriteLine strResult
复制代码

QQ 20147578

TOP

返回列表