С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/29: Рейтинг темы: голосов - 29, средняя оценка - 4.97
1 / 1 / 0
Регистрация: 10.08.2014
Сообщений: 31

Поиск файла в каталоге и его подкаталогах

10.08.2014, 16:02. Показов 5762. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как найти файл exe в каталоге и его подкаталогах
После нахождения запустить его если нет файла выдать сообщение: "файл не найден" ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.08.2014, 16:02
Ответы с готовыми решениями:

Поиск файла в каталоге и его подкаталогах
Нашел на просторах интернета код, для поиска файла на СИ, под Linux, как можно преобразовать код под Windows? #include <limits.h> ...

Напишите программу, которая в указанном пользователем каталоге и его подкаталогах выполняет поиск файла
Напишите программу, которая в указанном пользователем каталоге и его подкаталогах выполняет поиск файла. // Поиск файла в указанном...

Проверка наличия файла в заданном каталоге и его подкаталогах
Здравствуйте. Мне нужно проверить наличие файла с расширением .k но точное название каталога в котором он находится я не знаю. Как можно...

7
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
10.08.2014, 16:12
Использовать рекурсивный поиск.
Как то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void FindFiles( String start_path) {
    TSearchRec sr;
    if (start_path.Length()) {
        if (!FindFirst(start_path + "\\*.*", faAnyFile, sr))
            do {
                if (!(sr.Name == "." || sr.Name == ".."))
                    if (((sr.Attr & faDirectory) == faDirectory) ||
                        (sr.Attr == faDirectory)) {
                        FindFiles(start_path + "\\" + sr.Name);
                    }
                    else {
                        AnsiString Ext = sr.Name;
                        if (Ext == "Имя твоего файла.exe") {
               // тут, то что тебе надо.
                        }
                    }
            }
            while (!FindNext(sr));
        FindClose(sr);
    }
}
0
1 / 1 / 0
Регистрация: 10.08.2014
Сообщений: 31
10.08.2014, 17:12  [ТС]
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
void FindFiles( String start_path) {
    TSearchRec sr;
    if (start_path.Length()) {
        if (!FindFirst(start_path + "\\*.*", faAnyFile, sr))
            do {
                if (!(sr.Name == "." || sr.Name == ".."))
                    if (((sr.Attr & faDirectory) == faDirectory) ||
                        (sr.Attr == faDirectory)) {
                        FindFiles(start_path + "\\" + sr.Name);
                    }
                    else {
                        AnsiString Ext = sr.Name;
                        if (Ext == "Имя твоего файла.exe") {
               // тут, то что тебе надо.
                        }
                    }
            }
            while (!FindNext(sr));
        FindClose(sr);
    }
}
}
//---------------------------------------------------------------------------
Добавлено через 39 секунд
19 строка, ошибки пустая форма
Checking project dependencies...
Compiling Project1.cbproj (Debug, Win32)
bcc32 command line for "Unit1.cpp"
c:\program files (x86)\embarcadero\studio\14.0\bin\bcc32. exe -D_DEBUG -DUSEPACKAGES -n.\Win32\Debug -I"c:\program files
(x86)\embarcadero\studio\14.0\include\wi ndows\vcl";"C:\Program Files (x86)\Embarcadero\Studio\14.0\include\bo ost_1_39\boost\tr1\tr1";"C:\Program
Files (x86)\Embarcadero\Studio\14.0\include\bo ost_1_39";"c:\program files (x86)\embarcadero\studio\14.0\include";" c:\program files
(x86)\embarcadero\studio\14.0\include\di nkumware";"c:\program files (x86)\embarcadero\studio\14.0\include\wi ndows\crtl";"c:\program files
(x86)\embarcadero\studio\14.0\include\wi ndows\sdk";"c:\program files (x86)\embarcadero\studio\14.0\include\wi ndows\rtl";"c:\program files
(x86)\embarcadero\studio\14.0\include\wi ndows\vcl";"C:\Program Files (x86)\Raize\CS5\Lib\RS-XE6\Win32" -y -Q -k -r- -c -tR -tM -tU -tW -C8
-o.\Win32\Debug\Unit1.obj -w-par -Od -v -vi- -H=.\Win32\Debug\Project1.pch -H Unit1.cpp
[bcc32 Error] Unit1.cpp(19): E2141 Declaration syntax error
Full parser context
Unit1.cpp(18): parsing: void _fastcall TForm1::Button1Click(TObject *)
[bcc32 Error] Unit1.cpp(40): E2139 Declaration missing ;
Full parser context
Unit1.cpp(18): parsing: void _fastcall TForm1::Button1Click(TObject *)
[bcc32 Error] Unit1.cpp(40): E2190 Unexpected }
Failed
Elapsed time: 00:00:00.1
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,363
Записей в блоге: 3
10.08.2014, 18:25
Adahaxta, ты сам понял, что написал? Тебе была предложена функция поиска, реализацию которой надо поместить отдельно, а в обработчике события OnClick кнопки осуществить вызов этой функции.
Как-то вот так это должно выглядеть...
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
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void FindFiles( String start_path)   //Вот здесь твоя функция поиска нужного файла
{
    TSearchRec sr;
    if (start_path.Length()) {
        if (!FindFirst(start_path + "\\*.*", faAnyFile, sr))
            do {
                if (!(sr.Name == "." || sr.Name == ".."))
                    if (((sr.Attr & faDirectory) == faDirectory) ||
                        (sr.Attr == faDirectory)) {
                        FindFiles(start_path + "\\" + sr.Name);
                    }
                    else {
                        AnsiString Ext = sr.Name;
                        if (Ext == "Имя твоего файла.exe") {
               // тут, то что тебе надо.
                        }
                    }
            }
            while (!FindNext(sr));
        FindClose(sr);
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   FindFiles("C:\\Your_Folder"); //А вот это - вызов функции поиска, где в качестве параметра идет папка, 
                                          //в которой надо поиск произвести
}
0
1 / 1 / 0
Регистрация: 10.08.2014
Сообщений: 31
10.08.2014, 19:31  [ТС]
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
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void FindFiles( String start_path)   //Вот здесь твоя функция поиска нужного файла
{
    TSearchRec sr;
    if (start_path.Length()) {
        if (!FindFirst(start_path + "\\*.*", faAnyFile, sr))
            do {
                if (!(sr.Name == "." || sr.Name == ".."))
                    if (((sr.Attr & faDirectory) == faDirectory) ||
                        (sr.Attr == faDirectory)) {
                        FindFiles(start_path + "\\" + sr.Name);
                    }
                    else {
                        AnsiString Ext = sr.Name;
                        if (Ext == "test.exe") {
               // тут, то что тебе надо.
                        }
                    }
            }
            while (!FindNext(sr));
        FindClose(sr);
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   FindFiles("C:\\FILES"); //А вот это - вызов функции поиска, где в качестве параметра идет папка,
                                          //в которой надо поиск произвести
}
Добавлено через 18 секунд
Не ищет

Добавлено через 1 минуту
Папка FILES есть в ней test.exe
0
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
10.08.2014, 19:39
Adahaxta, а как ты определил нашёл он или нет?
0
1 / 1 / 0
Регистрация: 10.08.2014
Сообщений: 31
10.08.2014, 19:41  [ТС]
Подождал минуты 3
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,363
Записей в блоге: 3
10.08.2014, 20:37
У тебя в 29-й строке комментарий стоит, так ты вместо него напиши что-то типа
C++
1
ShowMessage("Hello!!! I am here !!!");
Если это покажет - файл найден. А с тем кодом, что у тебя ты до собачей пасхи можешь ждать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.08.2014, 20:37
Помогаю со студенческими работами здесь

В указанном каталоге и его подкаталогах найти 3 самых больших файла, вывести их имена, размеры и даты создания
Помогите пожалуйста написать задание из лабораторной работы по ОС 2. В каталоге, указанном первым параметром КФ, (и его подкаталогах)...

Поиск файлов по маске в каталоге и подкаталогах
Надо найти файы по маске в каталоге и подкаталогах. но у меня либо только в каталоге ищет ls *.txt либо только в подкаталогах ls...

Как получить файлы не только в каталоге, но и его подкаталогах
Получается считать один подкаталог и все его файлы.Но нада все подкаталоги начиная с указанного. string fileName = Console.ReadLine();...

Получить список всех файлов в каталоге и его подкаталогах
Привет всем, не знаю как получить список всех файлов в папке и ее подпапках. Хочу посчитать эти файлы и потом копировать с прогрессбаром,...

В заданном каталоге и его подкаталогах найти общее количество подкаталогов
Код КФ получился такой: @echo off for /D %%i in (%1\*.*) do set /A i+=1 echo The total number of subdirectories is %i% ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru