【问题标题】:VBS Script, add a new line in multiple txtVBScript,在多个文本中添加新行
【发布时间】:2016-02-18 07:05:10
【问题描述】:

我在一个文件夹中有一堆 txt 文件,我需要在每个文件中添加一行到指定的行号。

输入框 1:新 lineofText 作为字符串。 输入框 2:我希望插入此 lineoftext 的行,作为整数。

我发现的只是在顶部或底部添加文本,如下所示:

Dim FSO, txs, fld, fil, content
newline = inputbox("New line :")
line = inputbox("Which line :")
Set FSO = CreateObject("Scripting.FileSystemObject")

Set fld = FSO.GetFolder("\folderpath")
For Each fil In fld.Files
If Right(fil.Name, 3) = "txt" Then

    Set txs = fil.OpenAsTextStream(1) ' 1 = for reading
    content = txs.ReadAll
    txs.Close

    Set txs = fil.OpenAsTextStream(2) ' 2 = for writing
    txs.Write newline & vbCrLf & content
    txs.Close

End If    
Next

要写到最后,我只需切换一下:

txs.Write newline & vbCrLf & content

到这里:

txs.Write content & vbCrLf & newline

但是如何让它在指定的行号上写一个新行呢?


编辑:用户 duDE 告诉我我需要用这个来计算行数:

Dim nLineToAddTheNewLine : nLineToAddTheNewLine = 5 ' your desired line where you need the new line
line = 5
newline = "blablabla"
filename = "C:\myfile.txt"

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(filename)

Dim nCount : nCount = 0
Dim sContent : sContent = ""

Do Until f.AtEndOfStream
WScript.Echo f.ReadLine
sContent = sContent & f.ReadLine
nCount = nCount + 1
If nCount = line Then sContent = sContent & vbCrLf & newline
Loop
f.Close

此代码适用于具有直接名称的文件。 所以在这一点上,我很难让我的脚本正常工作。 这是我卡住的地方:

Const ForReading = 1
Const ForWriting = 2
'newline = inputbox("New line :")
'line = inputbox("Which line :")
newline = "blablabla"
line = 6
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Pattern = "Agent-API Blocking Queue Size: [1-9]+[0-9]*"
objStartFolder = "C:\MyfolderWithLotOfFiles\"

Dim lineCount : lineCount = 0
Dim firstContent : firstContent = ""

Set objFolder = objFSO.GetFolder(objStartFolder)
Set colFiles = objFolder.Files
For Each objFile in colFiles
  lineCount = 0
  firstContent = ""
  FileName = objStartFolder & objFile.Name
  WScript.echo FileName
  Set objStream = objFSO.OpenTextFile(FileName, ForReading)
  Do Until objStream.AtEndOfStream
    lineCount = lineCount + 1
    firstContent = firstContent & objStream.ReadLine
    if lineCount = line Then 
        Set objStream = objFSO.OpenTextFile(FileName, ForWriting)
        objStream.Write firstContent & vbCrLf & newline & vbCrLf
    End if
  Loop  
  objStream.Close 
Next

脚本正在读取每个txt文件的每一行,但是我想写的时候出错,请帮忙!

if lineCount = line Then 
    Set objStream = objFSO.OpenTextFile(FileName, ForWriting)
    objStream.Write firstContent & vbCrLf & newline & vbCrLf
End if

【问题讨论】:

  • 在你的情况下,我认为,你应该逐行阅读你的文本文件并将它们存储到一个数组中,然后通过循环浏览它们以供下一步
  • 在你上次的编辑中你忘了把这行 ==> Const ForWriting = 2
  • 是的,谢谢,我刚刚编辑了第一篇文章,duDE 几个小时前回答了这个问题,但后来被删除了。问题是我对 vbs 还很陌生,并且没有像程序员那样快地得到这个,我感觉很痛苦,已经 6 个小时我在一个简单的 txt 编写脚本上。如果您能在最后几行中指出我的错误,那您真是太好了?

标签: text vbscript numbers line


【解决方案1】:

试试这个代码:

Const ForReading = 1
Const ForWriting = 2
'newline = inputbox("New line :")
'line = inputbox("Which line :")
newline = "blablabla"
line = 6
Set objFSO = CreateObject("Scripting.FileSystemObject")
objStartFolder = "C:\MyfolderWithLotOfFiles\"

Dim lineCount : lineCount = 0
Dim firstContent : firstContent = ""

Set objFolder = objFSO.GetFolder(objStartFolder)
Set colFiles = objFolder.Files
For Each objFile in colFiles
    If LCase(objFSO.GetExtensionName(objFile)) = "txt" Then
        lineCount = 0
        firstContent = ""
        FileName = objStartFolder & objFile.Name
        WScript.echo FileName
        Set objStream = objFSO.OpenTextFile(FileName, ForReading)
        Do Until objStream.AtEndOfStream
            lineCount = lineCount + 1
            firstContent = firstContent & objStream.ReadLine & vbCrLf
            if lineCount = line Then 
                firstContent = firstContent & newline & vbCrLf
            End if
        Loop  
        Set objStream = objFSO.OpenTextFile(FileName, ForWriting)
        objStream.WriteLine firstContent
        objStream.Close 
    End If  
Next

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多