Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];

Вниз

Скрипт на 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.013 c
3-1148656387
SergeyGalat
2006-05-26 19:13
2006.07.30
Ошибка Table is Busy


2-1152416078
elfen_kenny
2006-07-09 07:34
2006.07.30
TIBUpdateSQL блин


15-1151395130
Dush
2006-06-27 11:58
2006.07.30
Стоимость программы


1-1150358274
def_
2006-06-15 11:57
2006.07.30
StringGrid и Hint


2-1152681115
zdm
2006-07-12 09:11
2006.07.30
JVCL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский