< %@LANGUAGE="VBSCRIPT " CODEPAGE="936"%>
<%
тусклый ул
ст=таймер()
'********************************************** ***********
'*************Класс SearchFile для поиска файлов на жестком диске *************
'******************Способ вызова: *************
'*************Set newsearch=new SearchFile 'Statement******************
'******************newsearch.Folder="F:+E:"'Источник входящего поиска**************** **
'******************newsearch.keyword="Компиляция" 'Ключевое слово******************
'************newsearch.Search 'Начать поиск******************
'******************Установить поиск новостей=Ничего 'Конец******************
'********************************************** ***********
Класс SearchFile
dim Folders 'Передайте абсолютный путь, используйте знак + для соединения нескольких путей, пробелов быть не должно.
dim ключевое слово 'Введите ключевые слова
dim objFso 'Определить глобальные переменные
dim Counter 'Определить глобальные переменные, количество результатов поиска
'******************инициализация****************************** *******
Частный подкласс_инициализировать
Set objFso=Server.CreateObject("Scripting.FileSystemObject")
Counter=0 'Инициализировать счетчик
Конец субтитра
'********************************************** ************
Частный подкласс_Terminate
Установить objFso=Ничего
Конец субтитра
'******************Открытый член, вызывающий метод************************** **
Функция поиска
Folders=split(Folders,"+") 'Преобразовать в массив
ключевое слово=trim(keyword) 'Удалить начальные и конечные пробелы
если ключевое слово="" тогда
Response.Write("<font color='red'>Ключевые слова не могут быть пустыми</font><br/>")
выход из функции
конец, если
'Определить, содержит ли он недопустимые символы
flag=instr(ключевое слово,"") или instr(ключевое слово,"/")
flag=флаг или instr(ключевое слово,":")
flag=флаг или instr(ключевое слово,"|")
flag=флаг или instr(ключевое слово,"&")
если флаг, то 'Ключевые слова не могут содержать /:|&
Response.Write("<font color='red'>Ключевые слова не могут содержать /:|&</font><br/>")
Функция выхода 'Выход, если это включено
конец, если
'Поиск по нескольким путям
Дими
для i = 0 до ubound (папки)
Call GetAllFile(Folders(i)) 'Вызов рекурсивной функции цикла
следующий
Response.Write("Всего найдено <font color='red'>"&Counter&"</font> результатов")
Конечная функция
'******************Обзор файлов и папок*************************** * **
Частная функция GetAllFile(Папка)
тусклый objFd,objFs,objFf
Установить objFd=objFso.GetFolder(Папка)
Установите objFs=objFd.SubFolders
Установите objFf=objFd.Files
'Обход подпапок
dim strFdName 'Объявляем имя подпапки
'************Обзор подпапок******
при ошибке продолжить дальше
Для каждого OneDir в objFs
strFdName=OneDir.Name
'Системные папки не просматриваются
Если strFdName<>"Config.Msi" EQV strFdName<>"RECYCLED" EQV strFdName<>"RECYCLER" EQV strFdName<>"Информация о системном томе" Тогда
SFN=Folder&""&strFdName 'Абсолютный путь
Call GetAllFile(SFN) 'Рекурсия вызова
Конец, если
Следующий
тусклое имя_строки
'************Просмотр файлов**********
Для каждого файла в objFF
strFlName=OneFile.Name
'desktop.ini иfolder.htt не включены в список
Если strFlName<>"desktop.ini" EQV strFlName<>"folder.htt" Тогда
FN=Папка&""&strFlName
Счетчик=Счетчик+ЦветВкл(FN)
Конец, если
Следующий
'******************************
'Закрываем каждый экземпляр объекта
Установить objFd=Ничего
Установить objFs=Ничего
Установить objFf=Ничего
Конечная функция
'************************Сгенерировать соответствующий шаблон************************ ******** **********
Частная функция CreatePattern (ключевое слово)
CreatePattern=ключевое слово
CreatePattern=Replace(CreatePattern,".",".")
CreatePattern=Заменить(CreatePattern,"+","+")
CreatePattern=Replace(CreatePattern,"(","(")
CreatePattern=Заменить(CreatePattern,")",")")
CreatePattern=Replace(CreatePattern,"[","[")
CreatePattern=Replace(CreatePattern,"]","]")
CreatePattern=Replace(CreatePattern,"{","{")
CreatePattern=Replace(CreatePattern,"}","}")
CreatePattern=Replace(CreatePattern,"*","[^\/]*") '* совпадение
CreatePattern=Replace(CreatePattern,"?","[^\/]{1}") '?
CreatePattern="("&CreatePattern&")+" 'Общее соответствие
Конечная функция
'******************************Поиск и раскрашивание ключевых слов*************** *** *********
Частная функция ColorOn(FileName)
тусклый объект objReg
Установить objReg=новое RegExp
objReg.Pattern=CreatePattern(ключевое слово)
objReg.IgnoreCase=Истина
objReg.Global=Истина
retVal=objReg.Test(FileName) 'Выполнить тест поиска, цвет и вывод, если он пройден
если retVal, то
OutPut=objReg.Replace(FileName,"<font color='#FF0000'>$1</font>") 'Установить цвет отображения ключевых слов
'******************************Эта часть может быть изменена по мере необходимости, а выходные данные********* ****** *********************
OutPut="<a href='#'>"&OutPut&"</a><br/>"
Response.Write(OutPut) 'Вывод результатов сопоставления
'************************************Конец изменяемой части******* ******************************
ColorOn=1 'Количество добавленных счетчиков
еще
ЦветВкл=0
конец, если
Установить objReg=Ничего
Конечная функция
Конечный класс
'************************Конец класса SearchFile************************ **
%>
<html>
<голова>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>www.knowsky.com</title>
</head>
<тело>
<form name="form1" метод="post" action="<% =Request.ServerVariables("PATH_INFO")%>">
Ключевые слова:
<input name="keyword" type="text" id="keyword">
<input type="submit" name="Submit" value="Search">
<a href="help.htm" target="_blank">Справка по расширенному поиску</a>
</форма>
<%
тусклое ключевое слово
ключевое слово = Request.Form («ключевое слово»)
если ключевое слово<>"" тогда
Установить newsearch=новый файл поиска
newsearch.Folders="E:Media+F:"
newssearch.keyword=ключевое слово
новостипоиск.Поиск
Установить поиск новостей=Ничего
response.Write("<br/>Требует времени: "&(timer()-st)*1000&"ms")
конец, если
%>
</тело>
</html>