Jag tänkte skapa ett skript som söker igenom alla textfiler i webrooten och letar efter ett angivet ord. Vill att träffar visas som länkar till de dokumenten.
Är det nåon som har några erfarenheter av detta. Det kanske finns något klart som är gratis att använda redan?
Eller finns det inte något sätt att söka i en fil med VBskript?
path = server.mappath("./")
word = "override"
set fso = server.createobject("scripting.filesystemobject")
set folder = fso.getFolder(path)
for each file in folder.files
Set objfile = fso.OpenTextFile(path & "/" & file.name, ForReading, False)
while not objfile.AtEndOfStream
strAll = objfile.ReadAll
if instr(strAll,word) > 0 then
response.write "Träff: <a href='" & file.name & "'>" & file.name & "</a><br>"
end if
wend
objFile.Close
next
set folder = nothing
set fso = nothing
Variabeln "ForReading" ska tydligen vara en siffra där tex 1 = reading...
<%
path = server.mappath("/site_info_script/")
Const ForReading = 1, ForWriting = 2, ForAppending = 3
word = "mattias"
set fso = server.createobject("scripting.filesystemobject")
set folder = fso.getFolder(path)
for each file in folder.files
Set objfile = fso.OpenTextFile(path & "/" & file.name, ForReading, False)
while not objfile.AtEndOfStream
strAll = objfile.ReadAll
if instr(strAll,word) > 0 then
response.write "Träff: <a href='" & file.name & "'>" & file.name & "</a><br>"
end if
wend
objFile.Close
next
set folder = nothing
set fso = nothing
%>
Hmmm... jag är inte världsbäst på det här. Behöver få reda på hur man på ett smidigt sätt loopar igenom alla kataloger + subkataloger på webrooten.
Jag har labbat med följande och det söker genom alla subkataloger i webrooten. Nu behöver fixa till något som även kollar i deras subkataloger.
Behöver hjälp? Är jag helt fel ute??? Finns det något enklare sätt? :p
<%
sSearchFor = Request.form("form_search_for")
%>
<form method="POST" action="text_search.asp" name="ChangeInfoForm">
<input type="text" name="form_search_for" value="<%=sSearchFor%>">
<input style="width:75" type="submit" name="ChangeButton" value="change">
<%
path = server.mappath("/")
word = sSearchFor
Const ForReading = 1, ForWriting = 2, ForAppending = 3
set fso = server.createobject("scripting.filesystemobject")
Set folder = fso.GetFolder(path)
Set folderCollection = folder.SubFolders
For Each subfol in folderCollection
mySubPath = subfol.Name
myFolderPath = path &"\" &MySubPath
funSearchFolder(myFolderPath) ' Starta funktionen som letar i filerna i denna katalogen '
Next
%>
<%
function funSearchFolder(myFolderPath)
set folder = fso.getFolder(myFolderPath)
response.write "<hr>" &myFolderPath &"<br>"
for each file in folder.files
varFileName = file.name
if instr(varFileName,".asp") > 0 then
Set objfile = fso.OpenTextFile(myFolderPath &"/" & file.name, ForReading, False)
while not objfile.AtEndOfStream
strAll = objfile.ReadAll
if instr(strAll,word) > 0 then
response.write "<font face=verdana size=2 color=darkred>" &folder.name &" - <a href=>" &file.name & "</a></font><br>"
else
response.write "<font face=verdana size=2 color=cccccc>" &folder.name &" - Not found.</font><br>"
end if
wend
objFile.Close
end if
next
end function
set folder = nothing
set fso = nothing
%>
Spontan tanke, du har nu en funktion som kollar efter filer. Kan du inte göra en funktion av folderkollen också som du kallar på i sig själv(!)
Blir kanske vad som kalla rekursiv funktion?
Följande skript verkar vara lovande. Men jag förstår inte riktigt hur file system objectet fungerar. Koden mellan ''''''''''''''''''''''''''''' har jag lag till.
Det smäller nu på: Set SelectedFile = fso.OpenTextFile(Path &"/" &varFileName, ForReading, False)
Vad gör jag för fel?
<%
Path = server.mappath("/")
Recurse(Path)
%>
<%
Sub Recurse(Path)
Dim fso, Root, WindowsFolder, Files, _
Folders, File, i, FoldersArray(100)
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set Root = fso.getfolder(Path)
Set Files = Root.Files
Set Folders = Root.SubFolders
For Each File In Files
'''''''''''''''''''''''''''''
varFileName = Path &"\" &file.name
response.write varFileName
if instr(varFileName,".asp") > 0 then
Set SelectedFile = fso.OpenTextFile(varFileName, ForReading, False)
while not SelectedFile.AtEndOfStream
strAll = SelectedFile.ReadAll
if instr(strAll,word) > 0 then
response.write "<font face=verdana size=2 color=darkred>" &folder.name &" - <a href=>" &file.name & "</a></font><br>"
else
response.write "<font face=verdana size=2 color=cccccc>" &folder.name &" - Not found.</font><br>"
end if
wend
selectedFile.Close
end if
'''''''''''''''''''''''''''''
Next
For Each Folder In Folders
'''''''''''''''''''''''''''''
'Code For Each Folder Found
response.write "<font color=green>" &folder.name &"</font><br>"
'Goes Here!
'''''''''''''''''''''''''''''
FoldersArray(i) = Folder.Path
i = i + 1
Next
For i = 0 To UBound(FoldersArray)
if FoldersArray(i) <> "" Then
Recurse FoldersArray(i)
Else
Exit For
End if
Next
End Sub
%>