2015-06-21 82 views
0

我试图搜索文本文件中的内容并返回行号。
我试图通过使用instr获取行号,但是超时了脚本。搜索返回行号

<% 
Const ForReading = 1 

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objTextFile = objFSO.OpenTextFile(Server.MapPath("evewhdb.txt"), 1) 

FSOContents = objTextFile.readline 
SResult = InStr(1,FSOContents,"A123456",1) 

If Sresult <>0 Then 
    Response.Write "line is: " & objTextFile.Line 

Else 
    Do While Not objTextFile.AtEndOfStream 
    Loop 
End If 

Set objFSO = nothing 
Set objTextFile = nothing 
%> 

无论如何,这是不行的,所以问题是:
有什么办法有行号上搜索一个文本返回。

回答

3

您必须循环含有readline,使其读取下一行,否则它会进入一个无限循环,这就是为什么它超时,不是因为你正在使用InStr

也在循环之前只发一次InStr,所以只有在第一行时才会发现它。再次,这需要在循环内。

此外,我已经改变它,以便它会找到多个事件,如果你不想那么你必须添加另一个条件到Do While我也加了-1到响应,否则它是偏移一个。

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objTextFile = objFSO.OpenTextFile(Server.MapPath("evewhdb.txt"), 1) 

FSOContents = objTextFile.readline 
Do While Not objTextFile.AtEndOfStream 
    SResult = InStr(1,FSOContents,"A123456",1) 
    If Sresult <>0 Then 
     Response.Write "line is: " & objTextFile.Line - 1 & "<BR>" 
    End If 
    FSOContents = objTextFile.readline 
Loop 

Set objFSO = nothing 
Set objTextFile = nothing