|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - Копирование всех файлов из директории |
|
Win32 API - Копирование всех файлов из директории
|
Старожил Сообщения: 222 |
Профиль | Отправить PM | Цитировать Ребята как на С++ и АРI реализовать копирование всех файлов из одной директории в другую?
|
|
------- Отправлено: 02:01, 02-09-2009 |
Пользователь Сообщения: 133
|
Профиль | Сайт | Отправить PM | Цитировать Я бы сделал так:
1. Сформировал список путей копируемых фалов с помощью функций: FindFirstFile(), FindNextFile. 2. Сформировал список путей к новым файлам: директория приёмник + имя фала из первого списка. 3. Организовал цикл копирования файлов с использованием функции CopyFile(). |
------- Отправлено: 15:35, 02-09-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 232
|
Профиль | Сайт | Отправить PM | Цитировать Если файлов в директории много, то можно выполнять копирование в потоках (thread) с целью ускорения процесса. Но думаю не стоит создавать большое количество потоков, т. к. это излишне загружает систему.
|
------- Отправлено: 20:19, 02-09-2009 | #3 |
Старожил Сообщения: 222
|
Профиль | Отправить PM | Цитировать А как это все организовать в коде? Ато я мидрил с FindFirst\NextFile(), CopyFile() но ничего толком не вышло ничего не копируется(((
|
------- Отправлено: 21:03, 03-09-2009 | #4 |
Старожил Сообщения: 232
|
Профиль | Сайт | Отправить PM | Цитировать Цитата DaRiYs:
#include <windows.h> void Copy(LPCTSTR szInDirName, LPCTSTR szOutDirName, bool flag = false) { WIN32_FIND_DATA ffd; HANDLE hFind; TCHAR szFind[MAX_PATH + 1]; TCHAR szInFileName[MAX_PATH + 1]; TCHAR szOutFileName[MAX_PATH + 1]; lstrcpy(szFind, szInDirName); lstrcat(szFind, "\\*.*"); //ищем файлы с любым именем и рысширением hFind = FindFirstFile(szFind, &ffd); do { //Формируем полный путь (источник) lstrcpy(szInFileName, szInDirName); lstrcat(szInFileName, "\\"); lstrcat(szInFileName, ffd.cFileName); //Формируем полный путь (результат) lstrcpy(szOutFileName, szOutDirName); lstrcat(szOutFileName, "\\"); lstrcat(szOutFileName, ffd.cFileName); if(flag) //если flag == true, то копируем и папки { if(ffd.dwFileAttributes & 0x00000010) { if(lstrcmp(ffd.cFileName, ".") == 0 || lstrcmp(ffd.cFileName, "..") == 0) continue; CreateDirectory(szOutFileName, NULL); Copy(szInFileName, szOutFileName); } } //иначе пропускаем папки else if(ffd.dwFileAttributes & 0x00000010) continue; CopyFile(szInFileName, szOutFileName, TRUE); } while(FindNextFile(hFind, &ffd)); FindClose(hFind); } int main() { //В конце пути к папкам не нужно добавлять "\" Copy("C:\\1", "C:\\2", true); //если нужно скопировать и поддиректории Copy("C:\\1", "C:\\2"); //если нужно скопировать только файлы } |
||
------- Последний раз редактировалось ganselo, 03-09-2009 в 23:58. Отправлено: 23:36, 03-09-2009 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Как проверить в определённой директории наличие файлов (не подкаталогов!) ? | SANIOK_AV | Скриптовые языки администрирования Windows | 26 | 21-06-2011 12:25 | |
Установка - Какова важность файлов в соответствующей папке в системной директории? | silalex | Microsoft Windows 2000/XP | 4 | 07-10-2009 01:31 | |
Копирование файлов с CD | ProkVS | Автоматическая установка Windows 2000/XP/2003 | 18 | 31-03-2007 06:42 | |
Установка одной временной директории для всех пользователей | red_dog | Microsoft Windows NT/2000/2003 | 2 | 15-12-2006 10:39 | |
Установка прог из OEM директории без копирования предварительно файлов на жесткий | MaxDELETE | Автоматическая установка Windows 2000/XP/2003 | 6 | 06-09-2006 03:49 |
|