Тема: VBS: скрипт по поиску файла и удаление его папки
Пожалуйста, помогите со скриптом ищущий Steam.dll. После того как файл найден удаляет папку с ним.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Серый форум → Общение → Windows Script Host, HTA (VBScript, JScript) → VBS: скрипт по поиску файла и удаление его папки
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Пожалуйста, помогите со скриптом ищущий Steam.dll. После того как файл найден удаляет папку с ним.
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", а далее поднимаясь на одну выше удалять её... Но как это сделать, я не знаю:(
На oszone Вам уже ответили. Странно все у Вас как-то - то удалять нужно папку "Valve", то папку, в которой находится папка "hl", то папку, где есть файл "cs.exe", то вдруг уже файл "Steam.dll". ![]()
искать папку "hl", а далее поднимаясь на одну выше удалять её
В том батнике, что Вам предложили для удаления папки "Valve", нужно просто вписать заместо нее "hl", а удалять не %%i, а %%~dpi - и все дела.
cтранно все у Вас как-то - то удалять нужно папку "Valve", то папку, в которой находится папка "hl", то папку, где есть файл "cs.exe", то вдруг уже файл "Steam.dll".
Просто изначально задание было искать папку "Valve", но потом подумав мы решили, что люди могли переименовать её или же у них стоит CS:S. Так что логичней искать cs.exe и потом поднимаясь на каталог выше удалять его.
Но и в этом варианте появилась загвоздка, ведь у них он может называться не cs.exe, а к примеру: Run_CSS.exe, css.exe. Так что я решил, что лучше искать либо папку hl, либо файл steam.dll и также далее подниматься на папку выше удалять его.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться