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

时间:2014-04-05 10:31:36

标签: 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(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文件夹路径中的任意数字。文件中只有一行。

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

1.txt 包含

C:\Folder1\

2.txt 包含

D:\Folder1\

3.txt 包含

D:\Folder2\

等...

3 个答案:

答案 0 :(得分:3)

  1. 在输入文件上使用.ReadLine()('文件中只有一行') - 自动删除可能的EOL
  2. 拆分真实' separator"," (不是",")
  3. VBScript循环计数器从0开始
  4. 使用匿名文本流对象 - 无需额外变量,无需关闭
  5. 在你问我关于goFS和qq()
  6. 之前请三思而后行

    在代码中:

      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\.\\
    "
    

答案 1 :(得分:0)

只想分享最终剧本

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

答案 2 :(得分:-1)

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