Text VBS脚本,在多个txt中添加新行

Text VBS脚本,在多个txt中添加新行,text,vbscript,numbers,line,Text,Vbscript,Numbers,Line,我在一个文件夹中有一堆txt文件,我需要为每个文件添加一行,以指定行号 input box 1 : New lineofText as string. input box 2 : Line where I want this lineoftext to be inserted, as an integer. 要写到最后,我只需切换如下: txs.Write newline & vbCrLf & content 为此: txs.Write content & vbCrLf

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

input box 1 : New lineofText as string. input box 2 : Line where I want this lineoftext to be inserted, as an integer. 要写到最后,我只需切换如下:

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 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

请尝试使用此代码:

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

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