VBScript - 跳过并读取文本文件中的行

时间:2014-04-17 12:35:40

标签: vbscript readline

你能帮我解决/制作漂亮的代码吗? 我有一个文件,我需要编辑并将其中的一些保存到下一个文件。保存不是问题,只是编辑。 我需要跳过2行并在接下来的30左右阅读内存。到现在为止我一直在使用:

Const ForReading = 1
Const ForWriting = 2

set WshShell = WScript.CreateObject("WScript.Shell")
strMyDocs = WshShell.SpecialFolders("MyDocuments")
strDesktop = WshShell.SpecialFolders("Desktop")

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strDesktop & "\folder\blabla.vbs", ForReading)

strText = objFile.SkipLine & objFile.SkipLine
strText = objFile.ReadLine & vbNewLine & objFile.ReadLine & vbNewLine & 
objFile.ReadLine & vbNewLine & objFile.ReadLine & vbNewLine & objFile.ReadLine & 
vbNewLine & objFile.ReadLine & vbNewLine &_
objFile.ReadLine & vbNewLine & objFile.ReadLine & vbNewLine & objFile.ReadLine & 
vbNewLine & objFile.ReadLine & vbNewLine & objFile.ReadLine & vbNewLine & 
objFile.ReadLine & vbNewLine & objFile.ReadLine & vbNewLine &_
objFile.ReadLine & vbNewLine & objFile.ReadLine & vbNewLine & objFile.ReadLine & 
vbNewLine & objFile.ReadLine & vbNewLine & objFile.ReadLine & vbNewLine & 
objFile.ReadLine & vbNewLine & objFile.ReadLine & vbNewLine &_
objFile.ReadLine & vbNewLine & objFile.ReadLine & vbNewLine & objFile.ReadLine & 
vbNewLine & objFile.ReadLine & vbNewLine & objFile.ReadLine & vbNewLine & 
objFile.ReadLine & vbNewLine & objFile.ReadLine & vbNewLine & objFile.ReadLine
objFile.Close
...

正如你所看到的那样看起来非常蹩脚,但是它可以完成这项工作。 我能够找到替换skilLine部分的东西:

For a = 1 to 30
If ((a =< 2) And (ObjFile.AtEndOfStream <> True)) Then
objFile.SkipLine
Do Until a = 30
objFile.ReadLine
Loop
Else    
objFile.Close
End If

但找不到下一条28行的方法。我尝试了很多,它总是读取28行,但从第31行开始,而不是从第3行开始。

你能帮帮我吗?

由于

3 个答案:

答案 0 :(得分:2)

这是另一种方式。

' Read all lines into an array...
a = Split(objFSO.OpenTextFile(strDesktop & "\folder\blabla.vbs", ForReading).ReadAll, vbCrLf)

' Start with the 3rd line and read 28 lines (if available)...
For i = 2 To 29
    If UBound(a) >= i Then strText = strText & a(i) & vbCrLf
Next

答案 1 :(得分:0)

这有用吗?请注意添加Do Until循环。

Const ForReading = 1
Const ForWriting = 2

set WshShell = WScript.CreateObject("WScript.Shell")
strMyDocs = WshShell.SpecialFolders("MyDocuments")
strDesktop = WshShell.SpecialFolders("Desktop")

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strDesktop & "\folder\blabla.vbs", ForReading)
objfile.SkipLine
objfile.SkipLine
Dim strText

Do Until objFile.AtEndOfStream
    If(Len(strText) > 0) Then strText = strText & vbNewLine
    strText = strText & objFile.ReadLine
Loop

objFile.Close

答案 2 :(得分:0)

如果rowcount大于2或小于30,则会读取一行,否则会跳过该行,然后您可以在strText

中对该行执行某些操作
rowcount = 1

Do While NOT objFile.AtEndOfStream

    if((rowcount > 2) And (rowcount < 30))Then

        strText = objTextFile.Readline
        'or strText = strText & vbCrLf & objTextFile.Readline

    Else

        strText = objTextFile.SkipLine 


    End If
rowcount = rowcount + 1
Loop