VBScript для разделения очень больших текстовых файлов - PullRequest
1 голос
/ 05 января 2011

Я новичок в 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

Строка F1 будет содержать имя нового текстового файла, а строка 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, а затем я получаю сообщение об ошибке «Отказано в доступе» в строке «Set newFile = fso.CreateTextFile (newFilePath, True)». Я уверен, что мне не хватает гораздо более простого способа сделать это.

Спасибо!

1 Ответ

1 голос
/ 05 января 2011

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

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    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...