Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/123: Рейтинг темы: голосов - 123, средняя оценка - 4.85
5 / 5 / 0
Регистрация: 31.03.2010
Сообщений: 71

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

24.08.2010, 09:12. Показов 26988. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru