Главная страница
    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.45 MB
Время: 0.011 c
6-1142589590
Volf_555
2006-03-17 12:59
2006.07.30
Как перехватить сообщение ICQ (QIP) и ответить на него?


2-1152255609
UMU
2006-07-07 11:00
2006.07.30
Вставить значение из Edit в AdoQuery


15-1151857716
Fl@sh
2006-07-02 20:28
2006.07.30
обьясните что за глюк??


1-1150451941
oleg444
2006-06-16 13:59
2006.07.30
Не могу отладить DLL


2-1151903792
maxistent
2006-07-03 09:16
2006.07.30
DOS-палитра





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский