Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.30;
Скачать: CL | DM;

Вниз

Скрипт на VBS, читающий название файлов в дирректории...   Найти похожие ветки 

 
Layner ©   (2006-07-03 13:37) [0]

Здравствуйте! Понадобилось сделать такй скрипт:

Dim fso, f, f1, fc, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder("D:\bd")
Set fc = f.SubFolders
For Each f1 in fc
  s = s & f1.name
  s = s & CHR(10)
Next
s = s & "Всего папок: " & fc.Count
WScript.Echo s

В данном случае, считаются папки, и выводится сообщение скалько их.
Потребовалось сделать почти тоже самое, только показать название файлов в дирректории, плюс эти все названия записать в текстовый файл. Подскажите, как такой изобразить на VBS? :) Очень надо эту задачу сделать скриптом. Заранее благодарю.


 
vbs   (2006-07-03 13:46) [1]

Как-нибудь так:

Sub DirList(strDirName, str_arrExtensions, objStream)
Dim objFld, objSubFld, objFle
Dim strFileExt, i

Set objFld = objFSO.GetFolder(strDirName)

For Each objFle In objFld.Files
 strFileExt = Right(objFle.Name, Len(objFle.Name) - InStrRev(objFle.Name, "."))
 For i = 0 To UBound(str_arrExtensions)
  If StrComp(strFileExt, Trim(str_arrExtensions(i)), vbTextCompare) = 0 Then
   objStream.WriteLine(objFle.Path)
   Exit For
  End If
 Next
Next

For Each objSubFld In objFld.SubFolders
 DirList objSubFld.Path, str_arrExtensions, objStream
Next

Set objFld = Nothing
End Sub


 
Layner ©   (2006-07-03 14:03) [2]

vbs   (03.07.06 13:46), спасибо за ответ, попробовал, что то никак не получается выдать в файл результать :( Даже не знаю, сканирует ли дирректорию...


Sub DirList(str_arrExtensions, objStream)
Dim objFld, objSubFld, objFle
Dim strFileExt, i

Set objFld = objFSO.GetFolder("C:\")

For Each objFle In objFld.Files
strFileExt = Right(objFle.Name, Len(objFle.Name) - InStrRev(objFle.Name, "."))
For i = 0 To UBound(str_arrExtensions)
 If StrComp(strFileExt, Trim(str_arrExtensions(i)), vbTextCompare) = 0 Then
  objStream.WriteLine(objFle.Path)
  Exit For
 End If
Next
Next

For Each objSubFld In objFld.SubFolders
DirList objSubFld.Path, str_arrExtensions, objStream
WScript.Echo "hhh"
Next

Set objFld = Nothing
End Sub



 
vbs   (2006-07-03 14:12) [3]

ну рекурсивный обход диска с может много времени занять

Для того, чтобы пройтись по одной директории нужно убрать это:

For Each objSubFld In objFld.SubFolders
DirList objSubFld.Path, str_arrExtensions, objStream
WScript.Echo "hhh"
Next


если отсев файлов по расширениям не нужен, то это тоже можно убрать:

strFileExt = Right(objFle.Name, Len(objFle.Name) - InStrRev(objFle.Name, "."))
For i = 0 To UBound(str_arrExtensions)
If StrComp(strFileExt, Trim(str_arrExtensions(i)), vbTextCompare) = 0 Then


 
Layner ©   (2006-07-03 14:59) [4]

Да, сложно что то с этими скриптами, пока оставил, дома с помощью книги попытаюсь разобраться. Спасибо! :)



Страницы: 1 вся ветка

Текущий архив: 2006.07.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.043 c
1-1150365320
Baiji
2006-06-15 13:55
2006.07.30
Освободить файл


2-1152078984
silvestr
2006-07-05 09:56
2006.07.30
Как вытащить имя файла без расширения ?


2-1152650237
XeON
2006-07-12 00:37
2006.07.30
Удаление записи из массива


15-1151433023
Nic
2006-06-27 22:30
2006.07.30
Как правильно ставить доп вентилятор?


6-1141231360
Призрак
2006-03-01 19:42
2006.07.30
Проигрыватель ASF