Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно
T3D T3D вне форума Автор темы

Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


Задание немного изменилось.
Надо найти файл cs.exe, а потом поднявшись на папку выше удалить её. Можно вариант с батником.

Код: Выделить весь код
SearchFold = "Valve" 'имя искомой папки 
RootFold = "D:\" 'корневой каталог для поиска 
FindedFolders ="" ' сюда запишутся все найденные папки 
 
   
call Get_Fold (RootFold) 'вызываем процедуру перебора подкаталогов, их удаления... 
call OutputResults() ' ...и показа результатов поиска 
sub Get_Fold (strFoldName) 
 
on error resume next 
Set FSO = CreateObject("Scripting.FileSystemObject") 
Set Folder = FSO.GetFolder(strFoldName) 
For Each SubFolder In Folder.SubFolders 
s_path=SubFolder.shortpath 'короткий путь в формате 8.3 
    f_name = SubFolder.Name   
    if LCase(f_name) = LCase(SearchFold) then 'это приводит сравниваемые имена к нижнему регистру. Таким образом при поиске регистр не учитывается... 
   'if f_name = SearchFold then ' ...а так регистр будет учитываться. Но мы этот варик закомментили :) 
'получаем нормально читаемый полный путь к папке 
Set objShell  = WScript.CreateObject("Shell.Application") 
Set objFolder = objShell.Namespace(s_path) 
l_path = objFolder.Self.Path 'длинный путь 
FSO.DeleteFolder l_path, 0 'прибиваем найденное. 1- удалять объекты с атрибутом "для чтения", 0- нет. 
FindedFolders=FindedFolders & vbcrlf & ">>" & l_path ' дописываем в переменную "FindedFolders" найденную папку 
'exit sub ' вываливаемся из процедуры 
else 
call Get_Fold (s_path) '...а теперь саму себя вызываем. Рекурсия, понимаешь :) 
end if 
Next 
end sub 
 
   
sub OutputResults 
if Len(FindedFolders) = 0 then 
msgbox("Ничего не нашли...") 
else 
msgbox("Чего-то было, но не стало:" & vbcrlf & vbcrlf & FindedFolders) 
Set FSO = CreateObject("Scripting.FileSystemObject") 
end if 
end sub
Есть поиск папки.
Если бы как-то использовать метод GetParentFolderName, то я бы мог искать папку "hl", а далее поднимаясь на одну выше удалять её... Но как это сделать, я не знаю :-(

Отправлено: 20:58, 14-01-2011 | #3