2011-01-05 5 views
1

Я новичок в vbscript, и у меня проблемы с чем-то, что должно быть относительно легко. У меня есть два очень больших текстовых файла, которые я должен разбить на множество разных текстовых файлов на основе определенных строк в файлах. Вот пример текстового файла:vbscript для разделения очень больших текстовых файлов

F1 SA1056-540X0 
F21 All_Tools 
F3 123229 99819 30MIL 
F3 317229 99819 30MIL 
F5 0 0 
F51 0 0 
F6 136103 204045 
F7 0 0 
F8 265094 249728 90000 1 N N 455229 
F9 C1A 
F8 265094 208328 90000 1 N N 455229 
F9 C1B 
F12 0.125000 250 0 
F1 SA1056-550X1 
F21 All_Tools 
F3 123229 99819 30MIL 
F3 317229 99819 30MIL 
F5 0 0 
F51 0 0 
F6 136103 204045 
F7 0 0 
F8 265094 249728 90000 1 N N 455229 
F9 C1A 
F8 265094 208328 90000 1 N N 455229 
F9 C1B 
F12 0.125000 250 0 

Ф1 линия обеспечит имя нового текстового файла в то время как F12 строка будет последняя строка в этом новом текстовом файле. Следующий F1 будет следующим файлом и так далее. Вот мой код. Не может ли метод ReadLine перейти к следующей строке?

Dim fso, newFile, folderPath 

folderPath = "C:\MyDataTest" 

Set fso = CreateObject("Scripting.FileSystemObject") 

For Each file In fso.GetFolder(folderPath).Files 

    Do While Not file.OpenAsTextStream.AtEndOfStream 
     strLine = file.OpenAsTextStream.ReadLine 
     strChar = file.OpenAsTextStream.Read(3) 
     Do While strChar <> "F12" 
      If strChar = "F1 " Then 
       fileName = Replace(strLine, "F1 ", "") 
       newFilePath = folderPath + "\" + fileName + ".txt" 
       Set newFile = fso.CreateTextFile(newFilePath, True) 
       newFile.WriteLine(strLine) 
       strLine = file.OpenAsTextStream.ReadLine 
       strChar = file.OpenAsTextStream.Read(3) 
      Else 
       newFile.WriteLine(strLine) 
       strLine = file.OpenAsTextStream.ReadLine 
       strChar = file.OpenAsTextStream.Read(3) 
      End If 
     Loop 
     newFile.WriteLine(strLine) 
     newFile.Close 
    loop 

Next  

Это создает файл и записывает первую F1 линию, а затем я получаю разрешение отказано ошибки во время выполнения на «(, True newFilePath) Установите NewFile = fso.CreateTextFile» линии. Я уверен, что мне не хватает гораздо более простого способа сделать это.

Спасибо!

ответ

1

Я смог понять это. Вот код для всех, кто интересуется:

Dim fso, fs, newFile, folderPath 

folderPath = "C:\MyDataTest" 

Set fso = CreateObject("Scripting.FileSystemObject") 
Set fs = CreateObject("Scripting.FileSystemObject") 


For Each file In fso.GetFolder(folderPath).Files 
    Set fileSplit = fso.OpenTextFile(file) 
    Do While Not fileSplit.AtEndOfStream 
     strLine = fileSplit.ReadLine 
     testStr = Left(strLine, 3) 
     If Left(strLine, 3) <> "F12" Then 
      If Left(strLine, 3) = "F1 " Then 
       fileName = Replace(strLine, "F1 ", "") 
       newFilePath = (folderPath + "\" + fileName + ".txt") 
       Set newFile = fs.CreateTextFile(newFilePath, True) 
       newFile.WriteLine(strLine) 
      Else 
       newFile.WriteLine(strLine) 
      End If 
     Else 
      newFile.WriteLine(strLine) 
      newFile.Close 
     End If 

    loop 
    fileSplit.Close 
Next  
Смежные вопросы