VB脚本使用分隔符从文件中提取文本

时间:2016-02-22 11:46:42

标签: vbscript

我尝试使用批处理来提取所需的代码,但这对大文件不起作用。我想知道这是否可以用VB脚本。所以,

我需要从两个分隔符之间的文件中提取文本并将其复制到TXT文件。此文本看起来像XML代码,而不是分隔符<string> text... </string>,我有:::SOURCE text .... ::::SOURCE。正如您在第一个分隔符中看到的那样是':'的3倍,而第二个是':'

的4倍

最重要的是这两个分隔符之间有多行。

文字示例:

text&compiled unreadable characters
text&compiled unreadable characters
:::SOURCE
just this code
just this code
...
just this code
::::SOURCE text&compiled unreadable characters
text&compiled unreadable characters

期望的输出:

just this code
just this code
...
just this code

1 个答案:

答案 0 :(得分:1)

也许你可以试试这样的事情:

filePath = "D:\Temp\test.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(filePath)

startTag = ":::SOURCE"
endTag = "::::SOURCE"
startTagFound = false
endTagFound = false
outputStr = ""

Do Until f.AtEndOfStream
    lineStr = f.ReadLine
    startTagPosition = InStr(lineStr, startTag)
    endTagPosition = InStr(lineStr, endTag)

    If (startTagFound) Then
        If (endTagPosition >= 1) Then
            outputStr = outputStr + Mid(lineStr, 1, endTagPosition - 1)
            Exit Do
        Else
            outputStr = outputStr + lineStr + vbCrlf
        End If
    ElseIf (startTagPosition >= 1) Then
        If (endTagPosition >= 1) Then
            outputStr = Mid(lineStr, startTagPosition + Len(startTag), endTagPosition - startTagPosition - Len(startTag) - 1)
            Exit Do
        Else
            startTagFound = true
            outputStr = Mid(lineStr, startTagPosition + Len(startTag)) + vbCrlf
        End If
    End If
Loop

WScript.Echo outputStr

f.Close

我已经假设开始和结束标记可以在文件内的任何位置,而不仅仅是在行的开头。如果您有关于&#34;编码&#34;。

的更多信息,也许您可​​以简化代码