1

Тема: VBS: скрипт по поиску файла и удаление его папки

Пожалуйста, помогите со скриптом ищущий Steam.dll. После того как файл найден удаляет папку с ним.

2

Re: VBS: скрипт по поиску файла и удаление его папки

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", а далее поднимаясь на одну выше удалять её... Но как это сделать, я не знаю:(

3

Re: VBS: скрипт по поиску файла и удаление его папки

На oszone Вам уже ответили. Странно все у Вас как-то - то удалять нужно папку "Valve", то папку, в которой находится папка "hl", то папку, где есть файл "cs.exe", то вдруг уже файл "Steam.dll".

искать папку "hl", а далее поднимаясь на одну выше удалять её

В том батнике, что Вам предложили для удаления папки "Valve", нужно просто вписать заместо нее "hl", а удалять не %%i, а %%~dpi - и все дела.

4

Re: VBS: скрипт по поиску файла и удаление его папки

Anmat пишет:

cтранно все у Вас как-то - то удалять нужно папку "Valve", то папку, в которой находится папка "hl", то папку, где есть файл "cs.exe", то вдруг уже файл "Steam.dll".

Просто изначально задание было искать папку "Valve", но потом подумав мы решили, что люди могли переименовать её или же у них стоит CS:S. Так что логичней искать cs.exe и потом поднимаясь на каталог выше удалять его.
Но и в этом варианте появилась загвоздка, ведь у них он может называться не cs.exe, а к примеру: Run_CSS.exe, css.exe. Так что я решил, что лучше искать либо папку hl, либо файл steam.dll и также далее подниматься на папку выше удалять его.