如何使用VBScript将文本从一个文件追加到特定行之后的另一个文件?

时间:2017-05-23 07:01:54

标签: vbscript

我需要将文本文件的内容插入到包含特定单词的行之后的另一个现有文本文件中。

这是我的代码。

'//OPEN FILE and READ
Set objFileToRead = fso.OpenTextFile(ActiveDocument.Path & "\file.txt", 1)
strFileText = objFileToRead.ReadAll()
objFileToRead.Close

objStartFolder = ActiveDocument.Path
Set objFolder = fso.GetFolder(objStartFolder)
Set colFiles = objFolder.files

For Each objFile In colFiles
  If fso.GetExtensionName(objFile.Name) = "opf" Then
    filename = objFile.Name
  End If
Next
MsgBox filename

'///PASTE
If fso.FileExists(ActiveDocument.Path & "\" & filename) Then
  MsgBox filename
  Set objFile = fso.OpenTextFile(ActiveDocument.Path & "\" & filename)

  Do Until objFile.AtEndOfStream
    strLine = objFile.ReadLine

    If InStr(strLine, "<manifest>") = 1 Then
      MsgBox filename
      objFile.WriteLine vbCrLf & strFileText
      objFile.Close
    End If
  Loop
End If

我在以下行中收到错误的文件错误

objFile.WriteLine vbCrLf & strFileText

任何人都可以告诉我出了什么问题以及我必须做什么吗?

1 个答案:

答案 0 :(得分:0)

您无法写入为阅读而打开的文件。

将修改后的内容写入临时文件,然后用原始文件替换原始文件:

p = fso.BuildPathActiveDocument.Path, filename)

Set f1 = fso.OpenTextFile(p)
Set f2 = fso.OpenTextFile(p & ".tmp", 2, True)

Do Until f1.AtEndOfStream
  line = f1.ReadLine
  f2.WriteLine line
  If InStr(line, "<manifest>") = 1 Then f2.WriteLine strFileText
Loop

f1.Close
f2.Close

fso.DeleteFile p, True
fso.GetFile(p & ".tmp").Name = filename

或在将修改后的内容写回原始文件之前将整个内容读入内存:

p = fso.BuildPathActiveDocument.Path, filename)

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

Set f = fso.OpenTextFile(p, 2)
For Each line In original
  f.WriteLine line
  If InStr(line, "<manifest>") = 1 Then f.WriteLine strFileText
Next
f.Close

请注意,后者不应该用于大文件,以免因内存耗尽而导致计算机停止运行。