Vbscript VBS在文本文件中拆分逗号分隔行

Vbscript VBS在文本文件中拆分逗号分隔行,vbscript,split,Vbscript,Split,我不是vbs脚本编写人员,但需要解决文本文件中逗号分隔行的问题,我想将该行拆分为单独的文件,我可以将该行拆分为多个文件,但所有文件都包含所有拆分行,因此我不知何故出错了 当前脚本是这样的 Set fso = CreateObject("Scripting.FileSystemObject") set src = fso.OpenTextFile("c:\Temp\Read.txt",1) lines = split(src.readall, ",") for i = 1 to ubound(l

我不是vbs脚本编写人员,但需要解决文本文件中逗号分隔行的问题,我想将该行拆分为单独的文件,我可以将该行拆分为多个文件,但所有文件都包含所有拆分行,因此我不知何故出错了

当前脚本是这样的

Set fso = CreateObject("Scripting.FileSystemObject")
set src = fso.OpenTextFile("c:\Temp\Read.txt",1)
lines = split(src.readall, ",")

for i = 1 to ubound(lines)
set dst = fso.CreateTextFile( i & ".txt", true)
dst.writeline lines(0)
dst.writeline lines(1)
dst.writeline lines(2)
dst.writeline lines(3)
dst.writeline lines(4)
dst.writeline lines(5)

dst.close
next
Read.txt看起来像这样

c:\Folder1\.\\, D:\Folder1\.\\, D:\Folder2\.\\
文本行有时包含一个文件夹,有时是6或7个文件夹,因此该行包含1到10个commadelimited FolderPath中的任意数字。文件中只有一行

我希望每次分割的输出都是一个新的文本文件,并且空格被删除,作为结尾“\\”(删除最后三个字符) 我知道如何在一个单独的vbs中完成它的一部分,但不知道如何将它包含在与上面相同的脚本中。下面是我希望得到的最终输出

1.txt包含

2.txt包含

3.txt包含

等等

  • 在输入文件上使用.ReadLine()('文件中只有一行')-自动消除可能的EOL
  • 在“真实”分隔符“,”(非“,”)上拆分
  • VBScript循环计数器从0开始
  • 使用匿名textstream对象-无需额外变量,无需关闭
  • 在你问我关于goFS和qq()的问题之前,请三思
  • 代码:

      Dim aParts : aParts = Split(goFS.OpenTextFile("..\testdata\22879679\22879679.txt").ReadLine(), ", ")
      WScript.Echo Join(aParts)
      Dim nF
      For nF = 0 To UBound(aParts)
          goFS.CreateTextFile("..\testdata\22879679\" & (NF + 1) &".txt").WriteLine aParts(nF)
      Next
      For nF = 0 To UBound(aParts)
          WScript.Echo qq(goFS.OpenTextFile("..\testdata\22879679\" & (NF + 1) &".txt").ReadAll())
      Next
    
    输出:

    c:\Folder1\.\\ D:\Folder1\.\\ D:\Folder2\.\\
    "c:\Folder1\.\\
    "
    "D:\Folder1\.\\
    "
    "D:\Folder2\.\\
    "
    

    只想分享最后的脚本

    Option Explicit
    Dim goFS  : Set goFS  = CreateObject( "Scripting.FileSystemObject" )
    Dim aParts : aParts = split(Replace(goFS.OpenTextFile("..\folder\read.txt").ReadLine(), ".\\", ""), ", ")
    Dim nF
    For nF = 0 To UBound(aParts)
    goFS.CreateTextFile("..\folder\" & (NF + 1) &".txt").WriteLine aParts(nF)
    Next
    For nF = 0 To UBound(aParts)
    WScript.Echo (goFS.OpenTextFile("..\folder\" & (NF + 1) &".txt").ReadAll())
    Next
    

    看起来不错,埃克哈德。不过我相信他不想把文件写进去。由于。\\n看起来没用(而且无论如何都需要删除),我们在创建初始数组时也可以这样做:
    aParts=Split(Replace(goFS.OpenTextFile(“..\testdata\22879679\22879679.txt”).ReadLine(),“\\”,“),”,“,”
    ,然后我们就不用担心它们了。我得到了goFS,但qq对我来说毫无意义,我删除了qq并按预期运行脚本。反正我想知道下qq的目的。谢谢你们的帮助,伙计们!看起来Ekkehard只是用它在输出周围加了引号(qq=双引号)。请通过解释代码如何解决问题来详细说明您的答案。提供一块没有解释的代码通常是没有帮助的。
      Dim aParts : aParts = Split(goFS.OpenTextFile("..\testdata\22879679\22879679.txt").ReadLine(), ", ")
      WScript.Echo Join(aParts)
      Dim nF
      For nF = 0 To UBound(aParts)
          goFS.CreateTextFile("..\testdata\22879679\" & (NF + 1) &".txt").WriteLine aParts(nF)
      Next
      For nF = 0 To UBound(aParts)
          WScript.Echo qq(goFS.OpenTextFile("..\testdata\22879679\" & (NF + 1) &".txt").ReadAll())
      Next
    
    c:\Folder1\.\\ D:\Folder1\.\\ D:\Folder2\.\\
    "c:\Folder1\.\\
    "
    "D:\Folder1\.\\
    "
    "D:\Folder2\.\\
    "
    
    Option Explicit
    Dim goFS  : Set goFS  = CreateObject( "Scripting.FileSystemObject" )
    Dim aParts : aParts = split(Replace(goFS.OpenTextFile("..\folder\read.txt").ReadLine(), ".\\", ""), ", ")
    Dim nF
    For nF = 0 To UBound(aParts)
    goFS.CreateTextFile("..\folder\" & (NF + 1) &".txt").WriteLine aParts(nF)
    Next
    For nF = 0 To UBound(aParts)
    WScript.Echo (goFS.OpenTextFile("..\folder\" & (NF + 1) &".txt").ReadAll())
    Next
    
    varTime=FormatDateTime (Now, 3)
    varMode=Right(varTime, 2)
    varNewLength=Len(varTime)-3
    varTime=Left(varTime, varNewLength)
    TestString = varTime
    TestArray = Split(varTime , ":")
    
    strHR=TestArray(0)
    print strHR 
    strMN=TestArray(1)
    print strMN
    strSC=TestArray(2)
    print strSC
    
    If varMode="PM" Then
    strHR=strHR+12  
    End If
    
    varTime=strHR&":"&strMN&":"&strSC