Vbscript 逐行读取txt文件

Vbscript 逐行读取txt文件,vbscript,Vbscript,我无法使vbscript逐行读取文本。 以下是代码应执行的步骤: 读取文件夹.txt 打开folder.txt中列出的文件 回显test.txt中的内容 读取folder-list.txt 打开folder-list.txt中列出的文件 打开dirlist.txt并逐行回显 folder.txt包含的示例: C:\Documents and Settings\Administrator\Desktop\ArtistCG\[ Go! Go! Heaven!!]_____________25 -__

我无法使vbscript逐行读取文本。 以下是代码应执行的步骤:

  • 读取文件夹.txt
  • 打开folder.txt中列出的文件
  • 回显test.txt中的内容
  • 读取folder-list.txt
  • 打开folder-list.txt中列出的文件
  • 打开dirlist.txt并逐行回显
  • folder.txt包含的示例:

    C:\Documents and Settings\Administrator\Desktop\ArtistCG\[ Go! Go! Heaven!!]_____________25 -______ ___- [525067]\test.txt
    C:\Documents and Settings\Administrator\Desktop\ArtistCG\[12CUT] _____ (Gakkou no Kaidan) [518382]\test.txt
    C:\Documents and Settings\Administrator\Desktop\ArtistCG\[2____] _____!__CD__________ [521206]\test.txt
    C:\Documents and Settings\Administrator\Desktop\ArtistCG\[Ability] _____________________ [514182]\test.txt
    
    C:\Documents and Settings\Administrator\Desktop\ArtistCG\[ Go! Go! Heaven!!]_____________25 -______ ___- [525067]\dirlist.txt
    C:\Documents and Settings\Administrator\Desktop\ArtistCG\[12CUT] _____ (Gakkou no Kaidan) [518382]\dirlist.txt
    C:\Documents and Settings\Administrator\Desktop\ArtistCG\[2____] _____!__CD__________ [521206]\dirlist.txt
    C:\Documents and Settings\Administrator\Desktop\ArtistCG\[Ability] _____________________ [514182]\dirlist.txt
    
    folder-list.txt包含的示例:

    C:\Documents and Settings\Administrator\Desktop\ArtistCG\[ Go! Go! Heaven!!]_____________25 -______ ___- [525067]\test.txt
    C:\Documents and Settings\Administrator\Desktop\ArtistCG\[12CUT] _____ (Gakkou no Kaidan) [518382]\test.txt
    C:\Documents and Settings\Administrator\Desktop\ArtistCG\[2____] _____!__CD__________ [521206]\test.txt
    C:\Documents and Settings\Administrator\Desktop\ArtistCG\[Ability] _____________________ [514182]\test.txt
    
    C:\Documents and Settings\Administrator\Desktop\ArtistCG\[ Go! Go! Heaven!!]_____________25 -______ ___- [525067]\dirlist.txt
    C:\Documents and Settings\Administrator\Desktop\ArtistCG\[12CUT] _____ (Gakkou no Kaidan) [518382]\dirlist.txt
    C:\Documents and Settings\Administrator\Desktop\ArtistCG\[2____] _____!__CD__________ [521206]\dirlist.txt
    C:\Documents and Settings\Administrator\Desktop\ArtistCG\[Ability] _____________________ [514182]\dirlist.txt
    
    每个dirlist.txt包含的内容示例

    C:\Documents and Settings\Administrator\Desktop\ArtistCG\[ Go! Go! Heaven!!]_____________25 -______ ___- [525067]\00.jpg
    C:\Documents and Settings\Administrator\Desktop\ArtistCG\[ Go! Go! Heaven!!]_____________25 -______ ___- [525067]\a_01.jpg
    C:\Documents and Settings\Administrator\Desktop\ArtistCG\[ Go! Go! Heaven!!]_____________25 -______ ___- [525067]\a_02.jpg
    C:\Documents and Settings\Administrator\Desktop\ArtistCG\[ Go! Go! Heaven!!]_____________25 -______ ___- [525067]\a_03.jpg
    
    这是vbscript代码

    Option Explicit
    
    Dim objFSO, strTextFile, strData, strLine, arrLines, aniTextFile, aniData, aniLines, meLine, objTextFile, fso, inputFileList, sFolderName, fname
    Dim iim1, iret, iret2, iret3, i
    CONST ForReading = 1
    
    strTextFile = "C:\Documents and Settings\Administrator\Desktop\ArtistCG\folder.txt"
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    strData = objFSO.OpenTextFile(strTextFile,ForReading).ReadAll
    arrLines = Split(strData,vbCrLf)
    
    For Each strLine in arrLines
      strData = objFSO.OpenTextFile(strLine,ForReading).ReadAll
    WScript.Echo strData
    
    aniTextFile = "C:\Documents and Settings\Administrator\Desktop\ArtistCG\folder-list.txt"
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    aniData = objFSO.OpenTextFile(aniTextFile,ForReading).ReadAll
    aniLines = Split(aniData,vbCrLf)
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set listFile = fso.OpenTextFile(aniLines).ReadAll
    do while not listFile.AtEndOfStream 
        fName =  listFile.ReadLine()
        WScript.Echo fName
        Loop
    Next
    
    到目前为止,我只执行了步骤1到步骤4,但我无法让它读取dirlist.txt。这里有什么解决方案吗?

    线路

    Set listFile = fso.OpenTextFile(aniLines).ReadAll
    
    不起作用的原因有两个:

    • Set
      只能在将对象分配给变量时使用,但
      ReadAll
      返回字符串
    • OpenTextFile()
      需要一个字符串,但
      aniLines
      是一个字符串数组
    要处理数组中的所有元素,可以使用以下方法:

    For Each line In aniLines
      ' read dirlist.txt file
    Next
    
    问题是如何读取
    dirlist.txt
    文件。您可以执行与处理其他文件相同的操作:读取文件的全部内容并将其拆分为一个数组:

    listFile  = fso.OpenTextFile(line).ReadAll
    listLines = Split(listFile, vbCrLf)
    
    然后使用另一个类似上面的循环来处理数组
    列表行的字段。这种方法更适合于小文件,因为代码更简单

    或者您可以使用
    ReadLine
    方法(当您必须处理大文件时,这是首选方法,因为它可以避免内存耗尽):


    Set listFile=fso.OpenTextFile(line)“+1,不过我建议使用
    ReadLine
    ,因为它比
    ReadAll
    Split
    组合更有意义。