Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ПОМОГИТЕ С ПОИСКОМ ФАЙЛА НА VBS!!!!!!!! 
:(
    Опции темы
LDA
Дата 9.2.2006, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 9.2.2006

Репутация: нет
Всего: нет



Народ помогите пожалик, я недавно начал изучать VBS поэтому вопрос может показаться смешным но всеже
Вообщем ситуация следующая:
Есть некий каталог - назавем его основным (в нем может быть куча под каталогов)
Нужна найти полный путь до определенного файла (проще говоря осуществить поиск)
Причем поиск должен начинаться с основного каталога (и во всех его подкаталогов)
PM MAIL   Вверх
amt
Дата 16.2.2006, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 26.10.2004
Где: г. Волгоград

Репутация: 3
Всего: 3



Вообще эта тема рассматривалась. Чаще пользуйся поиском. Ссылку искать не стал, поэтому кидаю тебе материал из своих архивов (этот материал мне подкинули на этом форуме).


Вот пример рекурсивного обхода

Инструкция:

1. подключить к новому проекту dll.ку под названием scrrun.dll, которая сидит в системной директории.
2. поместить на форму кнопку и textbox (непереименовывая пока).
3. зафигачить на форму весь исходник, который находится ниже и наслаждаться при нажатии на кнопку.
4. если плохо наслаждается, то раскомментируйте пятую строку в функции Help.

Код

Dim fso As New FileSystemObject
Dim file As String
Dim inpath As String

Private Sub Command1_Click()
Dim exists As Boolean
exists = FileExists("ger.txt", "c:\")
Text1.Text = inpath
End Sub

Public Function FileExists(Name As String, Path As String) As Boolean
If (Not fso.FolderExists(Path)) Then
   Exit Function
End If
file = Name
FileExists = Help(Path)
End Function

Public Function Help(Path As String) As Boolean
On Error Resume Next
Dim fld As Folder
Dim sfld As Folder
Dim sflds As Object

'Text1.Text = Path

Set fld = fso.GetFolder(Path)
   
If fso.FileExists(file) Then
   gotfile = True
   Help = True
   Exit Function
End If

Set sflds = fld.SubFolders

For Each sfld In sflds
   fso.GetFolder (sfld)
   If fso.FileExists(sfld.Path & "\" & file) Then
       Help = True
       inpath = sfld.Path
       Exit Function
   Else
       If sfld.SubFolders Then
           Help = Help(sfld.Path)
           Do While (fso.FileExists(inpath & "\" & file))
                  Exit Function
           Loop
       End If
   End If
   DoEvents
Next
End Function



Автор ответа: cardinal
И предложил сделать так

Код


Dim fso As New FileSystemObject
Dim file As String
Dim inpath As String

Private Sub Command1_Click()
Dim exists As Boolean
exists = FileExists("flag.doc", "E:\")
Text1.Text = inpath
End Sub

Private Function FileExists(Name As String, Path As String) As Boolean
If (Not fso.FolderExists(Path)) Then
   Exit Function
End If
file = Name
If Right(Path, 1) <> "\" Then Path = Path & "\"
FileExists = Help(Path)
End Function

Private Function Help(Path As String) As Boolean
On Error Resume Next
Dim sfld As Folder

'Text1.Text = Path

'условие остановки рекурсии
If fso.FileExists(Path & file) Then
   inpath = Path
   Help = True
   Exit Function
End If

'погружение в рекурсию (в следующие подпапки)
For Each sfld In fso.GetFolder(Path).SubFolders
   DoEvents
   If Help(sfld.Path & "\") Then
       Help = True
       Exit For
   End If
Next
End Function

--------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций.
PM MAIL   Вверх
Akina
Дата 17.2.2006, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



amt
Ему не на VB/VBA, а на VBScript...

LDA
хотя суть не меняется - точно также в VBS используй FSO. Даже по синтаксису многое совпадет. Пример же поиска (правда, нерекурсивного, но это неважно) через FSO есть в MSDN.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0414 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.