5 / 5 / 0
Регистрация: 31.03.2010
Сообщений: 71

Поиск папок с помощью FindFirstFile\FindNextFile

24.08.2010, 09:12. Показов 27341. Ответов 51
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как найти только папки?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.08.2010, 09:12
Ответы с готовыми решениями:

FindFirstFile и FindNextFile рекурсивный поиск файла
Как безопасно (без всевозможных переполнений и высвобождением ресурсов) реализовать рекурсивный поиск файла на одном из разделов диска? Или...

FindFirstFile, FindNextFile и setLocale
Пытался пройти по файлам в каталоге, как в примере на MSDN. Написал такой код #include <windows.h> #include <iostream> ...

FindNextFile,FindFirstFile,FindClose
#include <windows.h> #include <iostream> #include<tchar.h> using namespace std; //strcpy, strcat //_tcscpy,_tcscat int...

51
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
01.05.2014, 17:46
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от qwertun Посмотреть сообщение
шоб консоль осталась
Есть специальная функция getch(); тока я не помню какой хедер для него. Один из перечисленных:
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
01.05.2014, 18:25
Цитата Сообщение от Izual Посмотреть сообщение
#include <conio.h>
этот, и я знаю про неё, просто хз что не использовал

Добавлено через 22 секунды
Цитата Сообщение от Sysfa1l Посмотреть сообщение
Как найти только папки?
в теме почитай, должно быть
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
01.05.2014, 18:36
Цитата Сообщение от qwertun Посмотреть сообщение
в теме почитай, должно быть
Это сообщение №1, таков принцип форума: на новых страницах в верху всегда первое сообщение темы отображается =)
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
02.05.2014, 17:00
Цитата Сообщение от Izual Посмотреть сообщение
Это сообщение №1, таков принцип форума: на новых страницах в верху всегда первое сообщение темы отображается =)
а почему страница пятая????

Добавлено через 59 секунд
пардон, затупил

Добавлено через 22 часа 19 минут
Народ, нид хелп)
Вобщем имеется на 99% готовый файловый менеджер, но есть одно но, при подключении флешки в список дисков она не добавляется.
Функция для поика дисков имеет название void Localsdrive(HWND hComboTmp) и находится в верху файла class.h
Собственно вопрос: как винда узнаёт, что была подключена флешка, там типо какое-то сообщение есть или как?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
02.05.2014, 17:46
RegisterDeviceNotification
http://msdn.microsoft.com/en-u... 85%29.aspx
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
03.05.2014, 11:31
Убежденный, а можно пример какой-то, я поискал, почитал и ничо не понял.
Также я нашёл WM_DEVICECHANGE, но я не знаю как выловить букву диска к которой относится данное устройство (флешка).
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
03.05.2014, 12:12
qwertun, используйте поиск по форуму, тема не раз обсуждалась.
И еще можете поискать по RSDN, ключевые слова "WM_DEVICECHANGE" и
"RegisterDeviceNotification" - там и разные подходы разбирались, и код есть.
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
03.05.2014, 12:40
Уже не нада! Я сделал через WM_DEVICECHANGE! У меня есть функция, которая проверяет какие диски есть, и я просто её вызываю при DBT_DEVICEARRIVAL или DBT_DEVICEREMOVECOMPLETE.
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
07.05.2014, 19:15
Уважаемые форумчане, подскажите пожалуйста как найти только исполняемые файлы?
Код рабочей функции которая находит все подрят файлы
C
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
void FileCountDirSize(char szBuf[], int check)
{
    char SL[] = "\\";
    char ForFind[] = "*.*";
    char buf[MAX_PATH] = { 0 };
    buf[0] = '\0';
 
    if (check == 0)
    {
        strcat(buf, szBuf);
        memset(szBuf, 0, sizeof(szBuf));
        strcat(szBuf, buf);
    }
    else if (check == 1)
    {
        strcat(buf, szBuf);
        strcat(buf, SL);
    }
    
    strcat(buf, ForFind);
 
    WIN32_FIND_DATA FindFileDataF;
 
    HANDLE hFindF = FindFirstFile(buf, &FindFileDataF);
    if(hFindF != INVALID_HANDLE_VALUE)
    {
        do
        {
            if (!(FindFileDataF.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT))
            if (lstrcmp(FindFileDataF.cFileName, ".") != 0)
            if (lstrcmp(FindFileDataF.cFileName, "..") != 0)
            {
                if (hFindF == INVALID_HANDLE_VALUE)
                {
                }
                else
                {
                    if (FindFileDataF.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
                    {
                        char buff[MAX_PATH] = { 0 };
                        buff[0] = '\0';
                        strcat(buff, szBuf);
                        if (check == 1)
                        {
                            strcat(buff, SL);
                        }
                        strcat(buff, FindFileDataF.cFileName);
 
                        FileCountDirSize(buff, 1);
 
                        memset(buff, 0, sizeof(buff));
                    }
                    else
                    {
                        file++;
                    }
                }
            }
        }
        while(FindNextFile(hFindF, &FindFileDataF));
 
        FindClose(hFindF);
    }
    buf[0] = '\0';
}
0
 Аватар для Izual
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
07.05.2014, 20:55
Цитата Сообщение от qwertun Посмотреть сообщение
исполняемые файлы
что это?

Добавлено через 1 минуту
Ладно, сам нагуглил:
Исполняемыми файлами называются файлы, содержащие в себе готовые к запуску компьютерные программы.
Там же:
В Windows наиболее распространены бинарные исполняемые файлы. Самый часто встречающийся их вид - это приложение. Приложения имеют расширения EXE и могут запускаться самостоятельно. Помимо них, существуют динамические библиотеки (их расширение - DLL), которые содержат в себе общие для разных приложений функции. Ещё есть драйверы (DRV или VXD) - специальные программы, нужные для того, чтобы система могла взаимодействовать с конкретными моделями тех или иных устройств.
Ну получается что по расширению файла.
0
 Аватар для uhx
60 / 60 / 19
Регистрация: 11.07.2013
Сообщений: 305
09.05.2014, 01:39
qwertun, в 4 строке вы устанавливаете маску для поиска.
Если вам надо найти екзешники, то соотв:
C++
1
char ForFind[] = "*.exe";
0
0 / 0 / 0
Регистрация: 29.05.2020
Сообщений: 9
14.08.2020, 15:04
Я вот пытаюсь разобраться с первым аргументом в функции FindFirstFile... Пока не понял. Там некий паттерн. Это что глоб или что? Ну поятно там есть символ * или ? первое это любой символ или ноль символов. А второй 1 символ какой-то... Но в глобах есть и другие например если написать так *.txt|*.snp шаблон будет искать либо файлы с расширением txt либо snp. Есть квадратные скобки, означающие набор символов из диапазона... [a-d] или [^a-d]. первое все символы от a до d, а второе все символы, кроме символов от a до d... Я уж не говорю о том, что есть расширенные глобы... Даже не буду рассказывать что это. Это работает, или это мои фантазии? А у вас вообще какой-то странный шаблон *.* ибо он подразумевает, что в имени должна быть точка. У папок их как правило нет. Это значит, что ни одну папку мы не найдём. А у файлов есть. Но тоже не факт... И как быть? Я обычно пишу * Он находит всё и папки и файлы. Но тут другая проблема возникает. Вот простая задача. Имеется папка стартовая какая-то. Надо в ней и всех подпаках найти файлы с каким-то там расширением. Например txt. Как? Если задать шаблон *.txt то вы нифига не найдёте. Он просто посмотрит файлы в этой папке, а дальше не полезет... Если задать *, то надо проверять имена файлов. Хотелось бы задать какой-то шаблон поиска и заставить делать это функцию FindFirstFile. Но в функции FindNextFile нет шаблона.... Т.е. я должен параллельно в папке запустить ещё одну функцию FindFirstFile с шаблоном по файлу. Так? Сложновато получается... Да намудрили... Точнее недомудрили! Если бы улучшить функционал этой функции то всё можно было бы описать одной функцией. А так...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.08.2020, 15:04

Рекурсивный обход (FindFirstFile, FindNextFile)
Здравствуйте. Перед мной стоит задача выполнить поиск и некоторую работу со всеми файлами в определенном каталоге, количества директорий и...

WIN32 FindFirstFile и FindNextFile возвращают некорректное время
Здравствуйте. При листинге каталога Windows функциями FindFirstFile и FindNextFile таким образом: bool ListLocalDirectory(HANDLE...

FindNextFile
#include &lt;Windows.h&gt; #include &lt;iostream&gt; int main(int argc, TCHAR *argv) { WIN32_FIND_DATA dt; HANDLE handle; handle =...

FindNextFile в do {} while()
Здравствуйте. Хочу перебрать в цикле все файлы и папки в папке. Использую такой код: GetCurrentDirectory(9999, Buffer); //...

Функция FindFirstFile
Нужно получить размер файла с помощью функции FindFirstFile.Но параметры nFileSizeHigh и nFileSizeLow хранятся в неудобном формате....


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

Или воспользуйтесь поиском по форуму:
52
Ответ Создать тему
Опции темы

Новые блоги и статьи
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru