使用vbscript将文件中的某些行复制到另一个文件

时间:2015-04-13 12:29:55

标签: vbscript full-text-search

我是VB脚本的新手,并且正在尝试处理文件。

我正在尝试编写一个脚本,该脚本读取xml文件并将<Text></Text>标记之间的所有数据复制到新文件中。这应该发生在文件中的所有<Text></Text>部分。

我的文本文件如下。

<Text>    M3XAUDT-A           FILE M30000            --- AUDIT TRAIL STATISTICS ---     RUN   TUESDAY 07/02/02 AT 23:21     PAGE    1
                                            RECORD COUNTS FOR CAE ON FILE M2AUD

</Text>
</Page>
<Page>
<Text>    M3XAUDT-A           FILE M30000            --- AUDIT TRAIL STATISTICS ---     RUN   TUESDAY 07/02/02 AT 23:21     PAGE    2
                                            RECORD COUNTS FOR CAE ON FILE M3AUD
</Text>
</Page>
<Page>
<Text>    M3XAUDT-A           FILE M30000            --- AUDIT TRAIL STATISTICS ---     RUN   TUESDAY 07/02/02 AT 23:21     PAGE    3
                                            RECORD COUNTS FOR CAE ON FILE M2AUD
</Text>

在我开始创建一个新文件来复制这些部分之前,我想我能看到是否使用msgbox拾取了正确的数据。

我尝试使用下面的脚本,但是在显示第一行后进入循环失败了。

Dim fso2, objStream2, strline, strline1,

set fso2=Createobject("Scripting.FileSystemObject")
if fso2.fileExists("C:\Harsha\1_Test\Source\APE_new.xml") then
set objStream2 = fso2.OpenTextFile("C:\Harsha\1_Test\Source\APE_new.xml")
i=1
do while not objStream2.AtEndOfStream
        strline= strline & objStream2.Readline &vbNewLine
        do while instr(strline,"<Text>") 
                strline1=strline1&objStream2.Readline &vbNewLine
                msgbox strline1
        do until instr(strline1,"</Text>") 
        strline2=strline2&strline1
        loop
            msgbox strline2
        loop
loop

end if
ObjStream2.close 

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

试试这个:

Dim fso2, objStream2, strline, strline1, isReading
set fso2=Createobject("Scripting.FileSystemObject")
isReading = false
if fso2.fileExists("C:\Harsha\1_Test\Source\APE_new.xml") then
  set objStream2 = fso2.OpenTextFile("C:\Harsha\1_Test\Source\APE_new.xml")
  i=1
  do while not objStream2.AtEndOfStream
    strline= objStream2.Readline
    if instr(strline,"<Text>") then
      isReading = true
    end if
    if isReading = true then
      strline1 = strline1 & strline & vbNewLine
      msgbox "Read: " & strline
    endif
    if instr(strlin,"</Text>") then
       isReading = false
       msgbox "End of text, str is: " & strline1 & " , resetting strline1 var now"
       strline1 = ""
    end if
  loop
  objStream2.close 
end if