Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 20.04.2020
Сообщений: 10
Builder 6

Копирование файлов по расширению

20.04.2020, 22:25. Показов 3039. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые гении форума, прошу у вас помощи в решении одной задачи.
Необходимо создать приложение, которое будет копировать группу файл или файлы с заданным расширением в папку указанную пользователем.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.04.2020, 22:25
Ответы с готовыми решениями:

Поиск файлов по расширению
Надо написать консольное приложение, где входными данными были бы путь к каталогу и расширения файлов, которых мы ищем. Внутри каталога...

Поиск файлов по расширению
Есть переменная "NDisk" в которой хранится имя диска надо создать функцию которая ищет в корне этого диска файлы с расширением...

Как организовать поиск файлов по расширению?
У меня есть директория, в которой файлы с расширением *.txt! И мне надо что бы программа сама их нашла все... Помогите! Я не знаю как такое...

22
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,150
Записей в блоге: 3
21.04.2020, 00:22
Добрый день

C++
1
2
3
4
5
6
7
8
#include <IOUtils.hpp>
...
 
TStringDynArray Files;
Files = TDirectory::GetFiles("путь_к_папке откуда берем", "*.*", TSearchOption::soTopDirectoryOnly);
 
Копируем файлы в цикле при помощи 
CopyFileW(Files[i], "куда копируем",false);
2
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,399
Записей в блоге: 3
21.04.2020, 13:20
Раз уж список файлов получаем функциями модуля IOUtils, то и копировать логично будет функциями того же модуля...
C++
1
2
3
TStringDynArray A = TDirectory::GetFiles("Your_Old_Path", "*.your_extention", TSearchOption::soTopDirectoryOnly);
for(int i = 0; i < A.Length; i++)
  TFile::Copy(A[i], "Your_New_Path\\" + ExtractFileName(A[i]), true);
Добавлено через 4 минуты
А если таки захочется WinAPI полапать, то тогда так:
C++
1
CopyFileW(A[i].s_str(), L"куда копируем", false);
1
0 / 0 / 0
Регистрация: 20.04.2020
Сообщений: 10
21.04.2020, 14:18  [ТС]
При компилировании получаю ошибку:
[C++ Error] Unit1.cpp(5): E2209 Unable to open include file 'IOUtils.hpp'
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,150
Записей в блоге: 3
21.04.2020, 14:19
#include <IOUtils.hpp> в .h файле объявляете?
0
0 / 0 / 0
Регистрация: 20.04.2020
Сообщений: 10
21.04.2020, 14:23  [ТС]
Да обьявляю
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
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include "IOUtils.hpp"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString a;
AnsiString b;
AnsiString c;
a = (Edit1->Text);
b = (Edit2->Text);
c = (Edit3->Text);
TStringDynArray A = TDirectory::GetFiles( a.c_str;, b.c_str, TSearchOption::soTopDirectoryOnly);
for(int i = 0; i < A.Length; i++)
  TFile::Copy(A[i], c.c_str + ExtractFileName(A[i]), true);
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,150
Записей в блоге: 3
21.04.2020, 14:47
xsin, это .cpp не .h вкладка
0
0 / 0 / 0
Регистрация: 20.04.2020
Сообщений: 10
21.04.2020, 15:13  [ТС]
Я в .cpp и вставлял
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,150
Записей в блоге: 3
21.04.2020, 15:15
а надо тут (видимо запятую не поставил и получилось двух смыслено)
Цитата Сообщение от Dinkin Посмотреть сообщение
#include <IOUtils.hpp> в .h файле объявляете?
0
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,399
Записей в блоге: 3
21.04.2020, 15:17
Dinkin, это не суть важно в данном случае... Я вставляю и туда и туда, в зависимости от необходимости... Просто у ТС-а 6-й билдер - вот и все...
xsin, я прав? Если да - то вот Вам наглядный пример того, как недостаточная доза информации от Вас отняла время у людей и у Вас самого... Почему с самого начала нельзя было это указать?
0
0 / 0 / 0
Регистрация: 20.04.2020
Сообщений: 10
21.04.2020, 15:28  [ТС]
Да 6 билдер, прошу прощения за то что не уточнил

Добавлено через 6 минут
Та же ошибка появляется и в .h файле
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
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <IOUtils.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TEdit *Edit1;
        TEdit *Edit2;
        TButton *Button1;
        TEdit *Edit3;
        void __fastcall Button1Click(TObject *Sender);
private:    // User declarations
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,150
Записей в блоге: 3
21.04.2020, 15:37
тогда только через FindFirst и перебором. Тут пример поиска, сами подставите копирование?
1
0 / 0 / 0
Регистрация: 20.04.2020
Сообщений: 10
21.04.2020, 15:41  [ТС]
Глуповат я для таких вещей, попытаюсь, но думаю что попытка обречена на провал
0
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,399
Записей в блоге: 3
21.04.2020, 15:52
Цитата Сообщение от xsin Посмотреть сообщение
думаю что попытка обречена на провал
Какой может быть провал, если в самом 6-м билдере в справке есть готовый пример поиска файлов и по расширению и по атрибутам...
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,150
Записей в блоге: 3
21.04.2020, 16:00
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
 AnsiString aPath="C:\\....";      // каталог, в котором находится файлы
 AnsiString aPath1="D:\\....";      // каталог, куда копируешь
 TSearchRec sr;
 if (FindFirst(aPath +"*.*",  faAnyFile, sr) == 0)
    {
         do
         {
          if (sr.Name!="." && sr.Name!="..")
            CopyFileA((aPath + sr.Name).c_str(), (aPath1 + sr.Name).c_str(), false);
         }
         while  (FindNext(sr) ==  0);
         FindClose(sr);
    }
Не проверял
0
0 / 0 / 0
Регистрация: 20.04.2020
Сообщений: 10
21.04.2020, 16:12  [ТС]
Ничего не происходит(
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,150
Записей в блоге: 3
21.04.2020, 16:14
Код покажите свой
0
0 / 0 / 0
Регистрация: 20.04.2020
Сообщений: 10
21.04.2020, 17:37  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
 
 AnsiString aPath =(Edit1->Text);      // Каталог - откуда
 AnsiString aPath1 =(Edit1->Text);     // каталог - куда
 
 TSearchRec sr;
 if (FindFirst(aPath + "." ,  faAnyFile, sr) == 0)
    {
         do
         {
          if (sr.Name!="." && sr.Name!="..")
            CopyFileA((aPath + sr.Name).c_str(), (aPath1 + sr.Name).c_str(), false);
         }
         while  (FindNext(sr) ==  0);
         FindClose(sr);
    }
}
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,150
Записей в блоге: 3
21.04.2020, 17:51
Мой вариант
Цитата Сообщение от Dinkin Посмотреть сообщение
if (FindFirst(aPath +"*.*",  faAnyFile, sr) == 0)
Ваш
Цитата Сообщение от xsin Посмотреть сообщение
if (FindFirst(aPath + "." ,  faAnyFile, sr) == 0)
Найдите отличия =)
0
0 / 0 / 0
Регистрация: 20.04.2020
Сообщений: 10
21.04.2020, 17:56  [ТС]
Исправил, но изменений нет
Может я путь ввожу не так
C:\Users\****\Downloads\а - то откуда копирую(Edit1)
C:\Users\****\Downloads\pic -то куда копирую(Edit2)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.04.2020, 17:56
Помогаю со студенческими работами здесь

Поиск файлов по расширению по всем дискам
Друзья помогите пожалуйста !!! На с# нашел программу которая ищет файлы по расширению по всему ПК Ни как не могу понять как перевести...

Копирование всех файлов по расширению
string extensions = { &quot;*.png&quot;, &quot;*.txt&quot;, &quot;*.asp&quot; }; foreach (string ext in extensions) { ...

Поиск и копирование файлов по расширению,
Здравствуйте, такая вот проблема: при переустановке windows на Linux mint не уследил за одним моментом и затер все файлы. Там и фотки...

Выборка файлов по расширению, упаковка, отправка адресатам, ведение лога, резервное копирование
Всем привет Сделал следующий батник Он ищет в папке файлы aaa0000bbb*.CNG, архивирует их в aaa0000bbb*.zip, отправляет адресату, ведёт...

Отобразить имена файлов с иконками, соответствующими расширению файлов
Всем привет! Помогите, пожалуйста, решить такую задачу: имеется некий список имен файлов и необходимо отобразить эти имена с иконками,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru