Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - Копирование всех файлов из директории

Ответить
Настройки темы
Win32 API - Копирование всех файлов из директории

Старожил


Сообщения: 222
Благодарности: 1

Профиль | Отправить PM | Цитировать


Ребята как на С++ и АРI реализовать копирование всех файлов из одной директории в другую?

-------
Подпись, нарушающая правила конференции, отредактирована администратором


Отправлено: 02:01, 02-09-2009

 

Аватара для EvgeniyQQQ

Пользователь


Сообщения: 133
Благодарности: 21

Профиль | Сайт | Отправить PM | Цитировать


Я бы сделал так:
1. Сформировал список путей копируемых фалов с помощью функций: FindFirstFile(), FindNextFile.
2. Сформировал список путей к новым файлам: директория приёмник + имя фала из первого списка.
3. Организовал цикл копирования файлов с использованием функции CopyFile().

-------
"Не соглашайся ни на что, кроме совершенства!" - Анонимный автор.
"Совершенство достигается только к моменту полного краха." - К.Н.Паркинсон.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:35, 02-09-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для ganselo

Старожил


Сообщения: 232
Благодарности: 90

Профиль | Сайт | Отправить PM | Цитировать


Если файлов в директории много, то можно выполнять копирование в потоках (thread) с целью ускорения процесса. Но думаю не стоит создавать большое количество потоков, т. к. это излишне загружает систему.

-------
К величайшему сожалению "история учит нас тому, что она ничему не учит".


Отправлено: 20:19, 02-09-2009 | #3


Старожил


Сообщения: 222
Благодарности: 1

Профиль | Отправить PM | Цитировать


А как это все организовать в коде? Ато я мидрил с FindFirst\NextFile(), CopyFile() но ничего толком не вышло ничего не копируется(((

-------
Подпись, нарушающая правила конференции, отредактирована администратором


Отправлено: 21:03, 03-09-2009 | #4


Аватара для ganselo

Старожил


Сообщения: 232
Благодарности: 90

Профиль | Сайт | Отправить 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - Копирование всех файлов из директории

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход