我想搜索特定的单词然后在我要添加的每一行上的那个单词之后;在一开始

时间:2017-04-05 14:55:44

标签: vbscript

使用下面的代码,我可以在每行的开头添加;,但我想在找到特定单词后添加;,例如[Abc]。如何使用VBScript做到这一点?

Const ForReading=1
Const ForWriting=2

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set f = objFSO.OpenTextFile("D:\sam.txt", ForReading)

Do Until f.AtEndOfStream
    strText = f.ReadLine
    If Len(strText) = 0 Then
        blnFound = True
        MsgBox "blank line found"
        strText = vbNewLine & strText
        strContents = strContents & strText & vbCrlf
    Else
        strText = ";" & strText
        strContents = strContents & strText & vbCrlf
    End If
Loop

f.Close

Set f = objFSO.OpenTextFile("D:\sam.txt", Forwriting)
f.WriteLine strContents
f.Close

Sam.txt包含一些行,例如

Hi, need help
This is a sample text file
[Abc]
How are you
Hope you are doing well!

所以我希望输出sam.txt文件里面的数据应该是以下数据:

Hi, need help
This is a sample text file
[Abc]
;How are you
;Hope you are doing well!

2 个答案:

答案 0 :(得分:0)

所以,基本上,你有一个INI风格的文件,并希望评论特定部分的条目。这可以这样实现:

filename = "D:\sam.txt"

Set fso = CreateObject("Scripting.FileSystemObject")

txt = Split(fso.OpenTextFile(filename).ReadAll, vbNewLine)

disable = False
For i = 0 To UBound(txt)
  If Left(txt(i), 1) = "[" Then
    If txt(i) = "[Abc]" Then
      disable = True
    Else
      disable = False
    End If
  End If

  If disable Then txt(i) = ";" & txt(i)
Next

fso.OpenTextFile(filename, 2).Write Join(txt, vbNewLine)

答案 1 :(得分:0)

试试这个

Option Explicit 

Dim FSO ' Object

Set FSO = CreateObject("Scripting.FileSystemObject")

Dim ReadTxtFile, WriteTxtFile ' Object
Dim TextLine, TextLineToWrite ' String
Dim AddStr' bool

' Open both text file in the same time
Set ReadTextFile = FSO.OpenTextFile("Sam.txt", 1) ' Open file to read
Set WriteTextFile = FSO.OpenTextFile("Sam_new.txt", 2, True) ' Open file to write

' Do read file as normal but add a switch
' Write original text line to text file while switch is disabled
' Add str to the text line  and write once switch is trigger 

AddStr = False ' Add str disabled
Do Until ReadTextFile.AtEndOfStream ' Start Read

    Textline = ReadTextFile.Readline 

    If AddStr = True Then ' If add str enabled
        TextLineToWrite = ";" & Textline ' Add string
    Else ' if add str disabled
        TextLineToWrite = Textline ' write original line
    End If

    If Trim(Textline) = "[ABC]" Then ' If indicator read
        AddStr = True ' add str write
    End if

    WriteTextFile.WriteLine TextLineToWrite ' Write file when each line is read
Loop

ReadTextFile.Close
WriteTextFile.Close

msgbox "Done"