webForumDet fria alternativet

Sökning av hdd som vide gjort?

ASP

18 svar · 437 visningar · startad av ironhead

Medlem sedan mars 20011 346 inlägg
Frågan#1

Hittade detta i ett gammalt inlägg:

<HTML>
<link REL="stylesheet" HREF="../IncludeFiles/style.css" TYPE="text/css">
<BODY bgcolor="#FFFFFF" text="#000000"><br>
<span class="LinkCat">
Sökresultat med ordet '<%=Request("SearchText")%>'</span><BR>
<%
Const fsoForReading = 1

Dim strSearchText
strSearchText = Request("SearchText")

'Now, we want to search all of the files
Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

Dim objFolder
Set objFolder = objFSO.GetFolder(Server.MapPath("/download/"))

Dim objFile, objTextStream, strFileContents, bolFileFound
bolFileFound = False

For Each objFile in objFolder.Files
If Response.IsClientConnected then
Set objTextStream = objFSO.OpenTextFile(objFile.Path,fsoForReading)

strFileContents = objTextStream.ReadAll

If InStr(1,strFileContents,strSearchText,1) then
Response.Write "<LI><A HREF=""/" & objFile.Name & _
""">" & objFile.Name & "</A><BR>"

bolFileFound = True
End If

objTextStream.Close
End If
Next

if Not bolFileFound then Response.Write "Inga filer hittades..."

Set objTextStream = Nothing
Set objFolder = Nothing
Set objFSO = Nothing
%>

Hur ska man skriva i denna kod för att man ska kunna lista filerna i underkatalogerna under 'download' också?

[Redigerat av ironhead den 20 jul 2001]

Medlem sedan mars 20011 346 inlägg
#2

Kan man med hjälp av denna kod endast lista funna kataloger då?

Medlem sedan juni 20019 024 inlägg
#3
Set folder = filsystemobjekt.GetFolder(StartMapp)
Set underkataloger = folder.SubFolders

------------------
Peter D

Medlem sedan mars 20011 346 inlägg
#4

Pace: Hur ska jag implementera din kod i den befintliga för att få det att fungera?

Medlem sedan juni 20019 024 inlägg
#5

Hmmmmm ... bra fråga, och jag har tyvärr inget bra svar. Däremot finns det en sådan sökmotor på
http://www.surf-net.co.uk/asp/default.asp

vid namn "Advanced Site Search Engine v1.61" som använder Reg exp samt en enklare sökmotor för de som inte har VBScript 5.0.

Du kan ju alltid kolla i koden där! Koden är väldigt bra strukturerad och kommenterad. Surf-net har förutom detta sökverktyg även en hel del mycket användbara script.

------------------
Peter D

Medlem sedan mars 20011 346 inlägg
#6

Ska titta på det. Tack Pace!

Medlem sedan juni 20019 024 inlägg
#7

Ironhead!

Jag håller på att översätta koden till schwedish, så gör inte samma sak! Du kan få min (surf-nets) kod senare!

------------------
Peter D

Medlem sedan mars 20011 346 inlägg
#8

*he he* nice! mottages tacksamt ;)

Medlem sedan juni 20019 024 inlägg
#9

Jepp, det hoppas jag efter allt svett och mödosamma timmar (ehhh minuter snarare) jag lagt ned på detta! ;)

Dessutom slänger jag in ett par extra funktioner eventuellt. :)

Jag lägger upp det under wF script sedan. Observera Surf-Net's copyright dock!

------------------
Peter D

Medlem sedan mars 20002 836 inlägg
#10
<HTML>
<link REL="stylesheet" HREF="../IncludeFiles/style.css" TYPE="text/css">
<BODY bgcolor="#FFFFFF" text="#000000"><br>
<span class="LinkCat">
Sökresultat med ordet '<%=Request("SearchText")%>'</span><BR>
<%
Const fsoForReading = 1
Dim strSearchText, item

strSearchText = Request("SearchText")

'Now, we want to search all of the files
Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

Dim objFolder
Set objFolder = objFSO.GetFolder(Server.MapPath("/download/"))

[b]Set SubFolder = objFolder.SubFolders

'## -- börja loopa igenom alla submappar
For Each item in SubFolder
	Response.Write item & "<BR>"
Next
'## -- slut på submappar --[/b]

Dim objFile, objTextStream, strFileContents, bolFileFound
bolFileFound = False

For Each objFile in objFolder.Files
If Response.IsClientConnected then
Set objTextStream = objFSO.OpenTextFile(objFile.Path,fsoForReading)

strFileContents = objTextStream.ReadAll

If InStr(1,strFileContents,strSearchText,1) then
Response.Write "<LI><A HREF=""/" & objFile.Name & _
""">" & objFile.Name & "</A><BR>"

bolFileFound = True
End If

objTextStream.Close
End If
Next

if Not bolFileFound then Response.Write "Inga filer hittades..."

Set objTextStream = Nothing
Set objFolder = Nothing
Set objFSO = Nothing
%>

bör göra susen

cya,
PatrikB

[Redigerat av PatrikB den 24 jul 2001]

Medlem sedan juni 20019 024 inlägg
#11

... och filerna i underkatalogerna?

------------------
Peter D

[Redigerat av Pace den 24 jul 2001]

Medlem sedan juni 20019 024 inlägg
#12

Nu har jag i alla fall översatt koden och ska enbart finjustera HTML:n lite.

Men jag vill passa på att ta upp en gammal tråd, om open source utveckling,:
http://cgi.webforum.nu/wf/Forum11/HTML/005249.html

Vad säger ni om att göra detta scriptet open source? Jag har just översatt det, och det kan behöva optimeras en aning!

Kom med förslag.

------------------
Peter D

Medlem sedan mars 20011 346 inlägg
#13

PatrikB: Funkar nästan som jag vill nu. Men när jag söker på ett ord listas alla underkataloger oavsett sökord.

Pace: Entusiasm 100%, stjärna i kanten

Ni ska ha en eloge (alla) för att ni hjälper de nödställda stackarna (jag) som försöker programmera ;)

[Redigerat av ironhead den 25 jul 2001]

Medlem sedan mars 20002 836 inlägg
#14

Pace:
Då är det bara att skapa ett nytt folder object som körs på varje underkatalog om man vill söka sig nedåt.
Fast ... det kan ju bli en hel del,om sökvägen "råkar" vara c:\ *ler*

Ironhead:
Då får du jämföra katalognamnet med det sök ord som du har.

Tex:

For Each item in SubFolder
If LCase(strSearchString) = LCase(Left(item,Len(strSearchString)) Then
Response.Write item & "<BR>"
End If
Next

cya,
PatrikB

------------------
*Det tar sig sa han som hade eld i håret*

Medlem sedan mars 20011 346 inlägg
#15

Vad gör jag för fel?
PatrikB: Nu hittar den inte nånting...

Medlem sedan mars 20011 346 inlägg
#16

Är detta en dålig lösning? Den funkar iallafall. Kanske går det att göra på ett bättre sätt?

For Each item in SubFolder
a=Replace(item,"C:\Inetpub\wwwroot\Download\","")
If LCase(strSearchText) = LCase(Left(a,Len(strSearchText))) Then
Response.Write a & "<BR>"
End If
Next
Medlem sedan mars 20011 346 inlägg
#17

...Tillslut blev det såhär

strSearchText=Request.Form("SearchText")
For Each item in SubFolder
NewItem=Replace(item,"C:\Inetpub\wwwroot\adsl\Download\","")
If LCase(instr(NewItem,strSearchText)) Then
Response.Write NewItem
End If
Next
Medlem sedan juni 20019 024 inlägg
#18

Entusiasm 100%, stjärna i kanten

Jepp, eller en tusenlapp går också bra :)

Nåja, den översatta versionen har jag lagt upp på http://www.voodoofilm.org/opensource/sok.txt

Bara att ladda ner & använda! Men som sagt, det är open source, så optimera skiten och skicka den till mig igen så fler kan ta del av det!

------------------
Peter D

Medlem sedan mars 20011 346 inlägg
#19

*he he* Tack för det!

260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)