Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Получение списка файлов из указанной директории и всех её поддиректорий... / 15 сообщений из 15, страница 1 из 1
14.02.2005, 09:00:50
    #32913680
MrDDT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка файлов из указанной директории и всех её поддиректорий...
Нужно получить список файлов указанной директории и всех её поддиректорий (неограниченно "в глубину"). Как, например, это делает WinAmp при открытии директории c установленной галочкой "Recurse subdirectories".
Я рассмотрел функцию Dir, но что-то она меня не вдохновила. :( Как определить что из выдаваемых значений является файлом, а что папкой? Я так понял Dir не может искать только папки.
Ну да ладно, отличить файл от папки можно прибегнув к кое-каким извращённым действиям. :) Но, всёравно, реализация моей задачи (теми способами, которые мне извесны) представляется мне УЖ СЛИШКОМ извратной и слишком сложной для такой простой задачи как получение списка файлов. Как стрелять по мухе из базуки. :)

Кто сталкивался с подобной задачей, поделитесь опытом, пожалуйста!
Спасибо за внимание и участие! :)
...
Рейтинг: 0 / 0
14.02.2005, 09:20:14
    #32913708
Получение списка файлов из указанной директории и всех её поддиректорий...
Ну и кто вас учил пользоваться хелпом ?

' Display the names in C:\ that represent directories.
MyPath = "c:\" ' Set the path.
MyName = Dir(MyPath, vbDirectory) ' Retrieve the first entry.
Do While MyName <> "" ' Start the loop.
' Ignore the current directory and the encompassing directory.
If MyName <> "." And MyName <> ".." Then
' Use bitwise comparison to make sure MyName is a directory.
If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
Debug.Print MyName ' Display entry only if it
End If ' it represents a directory.
End If
MyName = Dir ' Get next entry.
Loop
...
Рейтинг: 0 / 0
14.02.2005, 09:53:04
    #32913766
MrDDT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка файлов из указанной директории и всех её поддиректорий...
Злой преподНу и кто вас учил пользоваться хелпом ?
Был бы у меня хелп, я бы учился им пользоваться. :) А у меня только книжка (в картинках) ;) , а там, как понимаете, далеко не всё описано.

If MyName <> "." And MyName <> ".." Then
Кстати, хотел спросить... Что означают эти точки, которые Dir выдаёт в начале...?

If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
А зачем вот этот кусочек кода: "... And vbDirectory ..."???

Спасибо! Функцию GetAttr я не знал... А можно полностью синтаксис?

И всё-таки... Для получения списка файлов таки придётся использовать циклы? Варианта проще нет?
...
Рейтинг: 0 / 0
14.02.2005, 10:08:21
    #32913799
Получение списка файлов из указанной директории и всех её поддиректорий...
нет хелпа , это что кнопка Фы1 не работает ?

эта текущая и родительская директория

Returns an Integer representing the attributes of a file, directory, or folder.

Syntax

GetAttr(pathname)

The required pathname argument is a string expression that specifies a file name. The pathname may include the directory or folder, and the drive.

Return Values

The value returned by GetAttr is the sum of the following attribute values:

Constant Value Description
vbNormal 0 Normal.
vbReadOnly 1 Read-only.
vbHidden 2 Hidden.
vbSystem 4 System file. Not available on the Macintosh.
vbDirectory 16 Directory or folder.
vbArchive 32 File has changed since last backup. Not available on the Macintosh.
vbAlias 64 Specified file name is an alias. Available only on the Macintosh.



Note These constants are specified by Visual Basic for Applications. The names can be used anywhere in your code in place of the actual values.

Remarks

To determine which attributes are set, use the And operator to perform a bitwise comparison of the value returned by the GetAttr function and the value of the individual file attribute you want. If the result is not zero, that attribute is set for the named file. For example, the return value of the following And expression is zero if the Archive attribute is not set:

Result = GetAttr(FName) And vbArchive

A nonzero value is returned if the Archive attribute is set.

Ну ещё можно сделать
dir /b /s /Ad c:\ >c:\1.1
а потом считать содержимое файла c:\1.1
...
Рейтинг: 0 / 0
14.02.2005, 10:52:06
    #32913898
MrDDT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка файлов из указанной директории и всех её поддиректорий...
Злой препод
А почему бы тогда не сделать так...
If (GetAttr(MyPath & MyName) And vbDirectory) > 0 Then ' ЭТО ПАПКА
Не понимаю, зачем надо сравнивать с той же самой vbDirectory ?.. :(
Или вот так вообще сделать...
If GetAttr(MyPath & MyName) > 15 Then ' ЭТО ПАПКА

Ну ещё можно сделать
dir /b /s /Ad c:\ >c:\1.1
а потом считать содержимое файла c:\1.1
Ваще ничё не понял :)
...
Рейтинг: 0 / 0
14.02.2005, 10:55:39
    #32913913
Получение списка файлов из указанной директории и всех её поддиректорий...
в командной строке выполни
эту команду и посмотри в появившийся файл
...
Рейтинг: 0 / 0
14.02.2005, 11:16:43
    #32913986
MrDDT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка файлов из указанной директории и всех её поддиректорий...
Я что подумал-то...
Всёравно же ведь придётся проверять все выдаваемые Dir'ом значения, проверяя папка это или нет?.. Это ж сколько ресурсов уходит на такое простое дело!
Более изящного и экономичного решения нет?.. :(
...
Рейтинг: 0 / 0
14.02.2005, 11:36:59
    #32914031
Получение списка файлов из указанной директории и всех её поддиректорий...
Ты тупой?
проверь сначала результат
там только папки
...
Рейтинг: 0 / 0
14.02.2005, 12:02:59
    #32914099
MrDDT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка файлов из указанной директории и всех её поддиректорий...
Дас ис фантастиш! :)
Только как это сделать из ВБ?..
...
Рейтинг: 0 / 0
14.02.2005, 12:04:39
    #32914104
MrDDT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка файлов из указанной директории и всех её поддиректорий...
...в смысле как отдать эту строку на выполнение из ВБ?..
...
Рейтинг: 0 / 0
14.02.2005, 12:06:51
    #32914115
Получение списка файлов из указанной директории и всех её поддиректорий...
Shell "dir /b /s....." , 0

А Фы1 реально не работает?
или хелпом воспользоваться религия не позволяет?
...
Рейтинг: 0 / 0
14.02.2005, 12:45:36
    #32914232
MrDDT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка файлов из указанной директории и всех её поддиректорий...
Злой преподShell "dir /b /s....." , 0
Благодарю!

А Фы1 реально не работает?
Да нету у меня никаких хелпов. ВБ на 1-м диске. При нажатии "Фы1" он меня посылает ... за хелпом. :)

или хелпом воспользоваться религия не позволяет?
А религия всё позволяет. Ибо атеист :)
...
Рейтинг: 0 / 0
14.02.2005, 14:57:03
    #32914408
Получение списка файлов из указанной директории и всех её поддиректорий...
А в Ёкселе или Ворде чё ?
там такой же хелп
...
Рейтинг: 0 / 0
14.02.2005, 15:18:45
    #32914472
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка файлов из указанной директории и всех её поддиректорий...
Собсно весь хелп точно так же можно найти на сайте мелкомягких.
Это на случай если нет елселя и ворда. :)

Magnus
...
Рейтинг: 0 / 0
15.02.2005, 08:48:42
    #32915507
MrDDT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение списка файлов из указанной директории и всех её поддиректорий...
Нашёл!
Злой препод, Magnus23 большое спасибо!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Получение списка файлов из указанной директории и всех её поддиректорий... / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]