VBS/WSH/JS - [решено] скрипт ищущий в системе папку Valve и удаляющий её

Аватара пользователя
T3D

VBS/WSH/JS - [решено] скрипт ищущий в системе папку Valve и удаляющий её

Сообщение T3D »

Помогите сделать скрипт ищущий в системе папку Valve и удаляющий её.



Заранее спасибо)))
Аватара пользователя
T3D

Re: VBS/WSH/JS - [решено] скрипт ищущий в системе папку Valve и удаляющий её

Сообщение T3D »

Осмелюсь предложить бат-файл - при его помощи это сделать гораздо удобнее и проще:



Код:

Код: Выделить всё

for /f "skip=1" %%a in ('wmic path win32_logicaldisk.drivetype^=3 get name') do (
 for /f "tokens=*" %%i in ('dir %%a /ad /s /b ^| findstr /i /e "\"') do (
  if /i "%%~ni"=="Valve" rd /s /q "%%i"
 )
)
Аватара пользователя
T3D

Re: VBS/WSH/JS - [решено] скрипт ищущий в системе папку Valve и удаляющий её

Сообщение T3D »

Можете подсказать как искать на нескольких дисках?
Аватара пользователя
T3D

Re: VBS/WSH/JS - [решено] скрипт ищущий в системе папку Valve и удаляющий её

Сообщение T3D »

Цитата T3D:



Надо найти файл cs.exe, а потом поднявшись на папку выше удалить её. Можно вариант с батником.
VBS/WSH/JS - [решено] скрипт ищущий в системе папку Valve и удаляющий её




Это, практически, так же, как и поиск папки.

Следующий батник удалит папку, в которой расположен файл cs.exe, на всех дисках.



Код:

Код: Выделить всё

for /f "skip=1" %%a in ('wmic path win32_logicaldisk.drivetype^=3 get name') do (
 for /f "tokens=*" %%i in ('dir %%a\cs.exe /a-d /s /b') do (
  rd /s /q "%%~dpi"
 )
)

Если нет надобности перебирать диски, а нужен конкретный (например, диск D), то:



Код:

Код: Выделить всё

for /f "tokens=*" %%i in ('dir d:\cs.exe /a-d /s /b') do (rd /s /q "%%~dpi")


Цитата T3D:



Если бы как-то использовать метод GetParentFolderName, то я бы мог искать папку "hl", а далее поднимаясь на одну выше удалять её... Но как это сделать, я не знаю :-(
VBS/WSH/JS - [решено] скрипт ищущий в системе папку Valve и удаляющий её




Не совсем понял - что же тебе, в конце концов, надо? Удалять ли папку, в которой находится cs.exe или удалять папку "hl"?

GetParentFolderName здесь можно использовать так:



Код:

Код: Выделить всё

If LCase(f_name) = "hl" Then FSO.DeleteFolder FSO.GetParentFolderName(s_path)
Аватара пользователя
SendMessage

Re: VBS/WSH/JS - [решено] скрипт ищущий в системе папку Valve и удаляющий её

Сообщение SendMessage »

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

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

Re: VBS/WSH/JS - [решено] скрипт ищущий в системе папку Valve и удаляющий её

Сообщение T3D »

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

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

Re: VBS/WSH/JS - [решено] скрипт ищущий в системе папку Valve и удаляющий её

Сообщение T3D »

Батник работает, отлично.



А вот добавив метод я получил следующие, папка "hl" находится. Всё в папке выше неё удаляется, но сама эта папка остаётся...
Аватара пользователя
T3D

Re: VBS/WSH/JS - [решено] скрипт ищущий в системе папку Valve и удаляющий её

Сообщение T3D »

А так?



Код:

Код: Выделить всё

Option Explicit
Const ROOT_FOLDER = "D:\"
Const SEARCH_FOLDER = "hl"
Dim strDelFolder
Dim objFSO
Dim RetVal
Set objFSO = CreateObject("Scripting.FileSystemObject")
GetFolders ROOT_FOLDER
If Len(strDelFolder) Then
  RetVal = MsgBox("Вы хотите удалить папку """ & strDelFolder & """," & vbNewLine & _
           "в которой находится искомая папка """& SEARCH_FOLDER & """?", 33, "Удаление папки")
  If RetVal = 1 Then objFSO.DeleteFolder strDelFolder, True
Else
  MsgBox "Папка """ & SEARCH_FOLDER & """ не найдена.", 64, "Удаление папки"
End If
Set objFSO = Nothing
WScript.Quit 0
Sub GetFolders(strFolderName) 
  Dim objSubFolder
    For Each objSubFolder In objFSO.GetFolder(strFolderName).SubFolders 
      If LCase(objSubFolder.Name) = LCase(SEARCH_FOLDER) Then
        strDelFolder = strFolderName
        Exit Sub
      Else 
        GetFolders objSubFolder.Path
      End If 
    Next
End Sub
Аватара пользователя
T3D

Re: VBS/WSH/JS - [решено] скрипт ищущий в системе папку Valve и удаляющий её

Сообщение T3D »

Теперь удаляется папка, но удаляется первая найденная, а остальные чтоб удалить - необходимо снова запускать скрипт)



Ну, да ладно, дальше сам разберусь как-нибудь...
Аватара пользователя
T3D

Re: VBS/WSH/JS - [решено] скрипт ищущий в системе папку Valve и удаляющий её

Сообщение T3D »

Хм, не думал, что их несколько. Ну тогда так можно:



Код:

Код: Выделить всё

Option Explicit
Const ROOT_FOLDER = "D:\"
Const SEARCH_FOLDER = "hl"
Dim strDelFolder
Dim objFSO
Dim RetVal
Dim arrDelFolders
Dim i
Set objFSO = CreateObject("Scripting.FileSystemObject")
GetFolders ROOT_FOLDER
If Len(strDelFolder) Then
  arrDelFolders = Split(strDelFolder, vbNewline)
  For i = 0 To UBound(arrDelFolders) - 1
    If objFSO.FolderExists(arrDelFolders(i)) Then
      RetVal = MsgBox("Вы хотите удалить папку """ & arrDelFolders(i) & """," & vbNewLine & _
               "в которой находится искомая папка """& SEARCH_FOLDER & """?", 33, "Удаление папки")
      If RetVal = 1 Then objFSO.DeleteFolder arrDelFolders(i), True
    End If
  Next  
Else
  MsgBox "Папка """ & SEARCH_FOLDER & """ не найдена.", 64, "Удаление папки"
End If
Set objFSO = Nothing
WScript.Quit 0
Sub GetFolders(strFolderName) 
  Dim objSubFolder
    For Each objSubFolder In objFSO.GetFolder(strFolderName).SubFolders 
      If LCase(objSubFolder.Name) = LCase(SEARCH_FOLDER) Then
        strDelFolder = strDelFolder & strFolderName & vbNewline
      Else 
        GetFolders objSubFolder.Path
      End If  
    Next    
End Sub
Ответить

Вернуться в «Скриптовые языки администрирования Windows»