你能帮我解决/制作漂亮的代码吗? 我有一个文件,我需要编辑并将其中的一些保存到下一个文件。保存不是问题,只是编辑。 我需要跳过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行开始。
你能帮帮我吗?
由于
答案 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