Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
15 / 13 / 6
Регистрация: 13.03.2013
Сообщений: 130

Поиск файлов по размеру в директории и поддиректориях

13.03.2013, 18:45. Показов 1575. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Пока новичок в этом деле, по этому сильно не пинайте если вопрос глупый.
Нашел пример поиска файлов, подогнал его по своим нуждам, но ни как не могу решить один вопрос. Мне надо искать файлы не по названию, а по размеру, точнее все файлы с размером меньше или ровно 1000 байт. Возможно ли это реализовать на базе этого кода?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Option Explicit
 
Dim fso As New FileSystemObject
Dim fld As Folder
 
Private Sub Command1_Click()
   Dim nDirs As Long, nFiles As Long, lSize As Currency
   Dim sDir As String, sSrchString As String
   sDir = InputBox("Type the directory that you want to search for", _
                   "FileSystemObjects example", "C:\")
   sSrchString = InputBox("Type the file name that you want to search for", _
                   "FileSystemObjects example", "vb.ini")
   MousePointer = vbHourglass
   Label1.Caption = "Searching " & vbCrLf & UCase(sDir) & "..."
   lSize = FindFile(sDir, sSrchString, nDirs, nFiles)
   MousePointer = vbDefault
   MsgBox Str(nFiles) & " files found in" & Str(nDirs) & _
          " directories", vbInformation
   MsgBox "Total Size = " & lSize & " bytes"
End Sub
 
Private Function FindFile(ByVal sFol As String, sFile As String, _
   nDirs As Long, nFiles As Long) As Currency
   Dim tFld As Folder, tFil As File, FileName As String
   
   On Error GoTo Catch
   Set fld = fso.GetFolder(sFol)
   FileName = Dir(fso.BuildPath(fld.Path, sFile), vbNormal Or _
                  vbHidden Or vbSystem Or vbReadOnly)
   While Len(FileName) <> 0
      FindFile = FindFile + FileLen(fso.BuildPath(fld.Path, _
      FileName))
      nFiles = nFiles + 1
      List1.AddItem fso.BuildPath(fld.Path, FileName)  ' Load ListBox
      FileName = Dir()  ' Get next file
      DoEvents
   Wend
   Label1 = "Searching " & vbCrLf & fld.Path & "..."
   nDirs = nDirs + 1
   If fld.SubFolders.Count > 0 Then
      For Each tFld In fld.SubFolders
         DoEvents
         FindFile = FindFile + FindFile(tFld.Path, sFile, nDirs, nFiles)
      Next
   End If
   Exit Function
Catch:  FileName = ""
       Resume Next
End Function
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.03.2013, 18:45
Ответы с готовыми решениями:

Заменить расширения имен файлов в заданной директории и поддиректориях
Привет) Прошу помощи господа. Задача такова: Реализовать сценарий на диалекте языка командного интерпретатора bash, производящий...

Как получить список всех файлов в директории и поддиректориях
Требуется сделать метод, который бы возвращал массив всех файлов находящихся в заданной директории и всех поддиректориях на произвольную...

Поиск файлов по размеру
Только начинаю изучать Bash скрипты. Нашел код скрипта, считающего для заданного каталога(1 аргумент) и всех его подкаталогах суммарный...

8
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,906
13.03.2013, 20:49
Какой-то сложный у Вас пример
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub Form_Load()
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
Search FSO.GetFolder("C:\")
End Sub
 
Sub Search(Fold As Object)
Dim SubFold As Object
Dim File As Object
For Each File In Fold.Files
    If File.Size <= 1000 Then Debug.Print File.Path, File.Size
Next File
On Error GoTo ErrHandle
For Each SubFold In Fold.SubFolders
    Search SubFold
Next SubFold
Exit Sub
ErrHandle:
MsgBox "Íåò äîïóñêà ê ïàïêå """ & Fold.Path & """"
Err.Clear
End Sub
1
15 / 13 / 6
Регистрация: 13.03.2013
Сообщений: 130
13.03.2013, 21:02  [ТС]
на лаконичность и не претендовал
а ещё такой вопрос, можно как-то эти найденные файлы посчитать?
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,906
13.03.2013, 21:06
Да уж, посчитать - это самое сложное
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
option explicit
dim c as long
Private Sub Form_Load()
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
c=0
Search FSO.GetFolder("C:\")
msgbox c
End Sub
 
Sub Search(Fold As Object)
Dim SubFold As Object
Dim File As Object
For Each File In Fold.Files
    If File.Size <= 1000 Then Debug.Print File.Path, File.Size:c=c+1
Next File
On Error GoTo ErrHandle
For Each SubFold In Fold.SubFolders
    Search SubFold
Next SubFold
Exit Sub
ErrHandle:
MsgBox "Нет допуска к папке """ & Fold.Path & """"
Err.Clear
End Sub
1
15 / 13 / 6
Регистрация: 13.03.2013
Сообщений: 130
13.03.2013, 21:11  [ТС]
Цитата Сообщение от Апострофф Посмотреть сообщение
Да уж, посчитать - это самое сложное
просто весь день сижу над этим, голова уже не соображает, да ещё и приболел не много
я наверно не так выразился, мне надо посчитать количество всех найденных файлов удовлетворяющих условию
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,906
13.03.2013, 21:17
Цитата Сообщение от forlife Посмотреть сообщение
мне надо посчитать количество всех найденных файлов удовлетворяющих условию
Ну так c - это счетчик, в нём и результат.
0
15 / 13 / 6
Регистрация: 13.03.2013
Сообщений: 130
13.03.2013, 21:25  [ТС]
это я понял
пытаюсь вывести его результат в MsgBox, а он выдаёт несколько сообщений, я так понял для каждой из подпапок, а мне надо получить конечную сумму
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,906
13.03.2013, 21:33
Цитата Сообщение от forlife Посмотреть сообщение
пытаюсь вывести его результат в MsgBox
Я его уже вывел в восьмой строке кода, а как Вы пытаетесь - загадка?
1
15 / 13 / 6
Регистрация: 13.03.2013
Сообщений: 130
13.03.2013, 21:35  [ТС]
да, прошу прощения, проглядел, всё работает более чем здорово!
большое человеческое спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.03.2013, 21:35
Помогаю со студенческими работами здесь

Замена русского текста в нескольких файлах в директории и поддиректориях
Добрый день! 1. Версия питона Python 3.6.9 2. Description: Ubuntu 18.04.3 LTS Release: 18.04 Codename: bionic 3. locale -a C ...

Реализовать поиск в указанном каталоге всех файлов во всех поддиректориях и сформировать XML в нужном формате
Искать в указанном каталоге все файлы во всех поддиректориях и формировать XML в нужном формате. XML записать в директорию рядом с...

Реализовать поиск в указанном каталоге всех файлов во всех поддиректориях и сформировать XML в нужном формате
Задача: Искать в указанном каталоге все файлы во всех поддиректориях и формировать XML в нужном формате. XML записать в директорию...

FindFirst. Поиск во всех поддиректориях, всех файлов
Не получается рекурсивно вызвать 1ую процедуру, почему-то только для первой папки ищет все файлы. unit Unit2; interface ...

Поиск файлов по маске/дате/размеру
Доброго времени суток, уважаемые. Нужно сделать программу для поиска файлов по маске, дате создания (начальная и конечная даты поиска) и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru