Войти

Показать полную графическую версию : [решено] Поиск мультимедиа файлов


T3D
28-01-2011, 18:42
Нужен скрипт для поиска файлов по расширениям (.avi, .mp3, .mp4 и т.п.).
Поиск должен осуществляться по всем дискам на компьютере. И в конце записывать результаты в файл, который бы сохранял: путь к файлу, имя компьютера, желательно, IP.

P.S.: Агенты на работе начали распространять видео и ходить искать на 400 компах не весело.

Заранее благодарен.

Busla
28-01-2011, 22:34
Ну так начинай - народ по ходу дела подскажет, подправит...

T3D
29-01-2011, 09:38
Думаете, если бы я мог, то попросил бы помощи?

Vadikan
29-01-2011, 12:02
Думаете, если бы я мог, то попросил бы помощи? »
Думаем, что мог бы отфильтровать форум по 'расш' и найти http://forum.oszone.net/thread-169019.html

T3D
29-01-2011, 16:14
Dim strDelFile
Dim objFSO
Dim arrDelFile
Dim arrRashir
Dim i
Dim arrDriveItem
Dim objSubFolder
Dim FSO
Dim f

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set f = FSO.OpenTextFile("123.txt", 2, True)
'Открываем файл, если он не создан, создаем его
'Путь к лог-файлу

'Заполнение массива с разришениями'
For Each arrRashir In Array(".mp3", ".avi", ".mp4", ".mkv", ".wmv")
Next

'Процедура создающая массив содержащий информацию о всех дисках'
For Each arrDriveItem In objFSO.Drives
If arrDriveItem.DriveType = 2 Then GetFolders arrDriveItem.Path & "\"
Next

'Процедура подбора'
Sub GetFolders(strFolderName)
On Error Resume Next
For Each objSubFolder In objFSO.GetFolder(strFolderName).SubFolders
For Each 'Привязать расширения'
If LCase(objSubFolder.Name) = LCase(arrRashir(i)) Then
If Err.Number = 0 Then
strDelFile = (strDelFile & strFolderName & vbNewLine)
f.WriteLine (arrDelFolders(i) & " " & date & " " & time)
Else
Err.Clear
End If
Else
GetFolders objSubFolder.Path
End If
Next
End Sub


Вот, попытался сделать что-то. Не могу понять как мне привязать массив с расширениями к процедуре перебора.


P.S.: процедуры брал из скрипта по поиску и удалению папки, так что не ругайтесь, если что не так.

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

amel27
29-01-2011, 19:01
VBS вариант на WMI:
strFile = ".\FileList.txt"

Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objWSS = CreateObject("WScript.Shell")

Set colItem = objWMI.ExecQuery("SELECT DeviceID From Win32_LogicalDisk Where DriveType=3")
For Each objItem In colItem
strDRV=strDRV &"Drive='"& objItem.DeviceID &"' OR "
Next

strSELECT="SELECT Name From CIM_DataFile Where ("& Left(strDRV,Len(strDRV)-4) &") AND ("& _
"Extension='AVI' OR " & _
"Extension='MP3' OR " & _
"Extension='MP4')"

Set colItem = objWMI.ExecQuery(strSELECT)
Set objFile = objFSO.OpenTextFile(strFile,2,vbTrue)

objFile.WriteLine objWSS.ExpandEnvironmentStrings("%ComputerName%"& vbCRLF)
For Each objItem In colItem
objFile.WriteLine(objItem.Name)
Next

objFile.Close


P.S. я в таких случаях просто называю файл именем машины




© OSzone.net 2001-2012