Имя исходного каталога и каталога назначанеия программа получает через командную строку.
#include <windows.h> #include <iostream> #include <stdio.h> #include <conio.h> using namespace std; //indir - откуда копировать //outdir - куда копировать BOOL Copy(char indir[128],char outdir[128]) { WIN32_FIND_DATA FindFileData; HANDLE hFind; CreateDirectory(outdir, NULL);//создаём директорию куда всё будем копировать char maska[128] = {0}; strcat(maska,indir);strcat(maska,"/*");//Где какие файлы ищем hFind = FindFirstFile(maska, &FindFileData);//Поиск файлов if(hFind == NULL) return FALSE; do { if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)// нашли папку { if(strcmp(FindFileData.cFileName,".")&&strcmp(FindFileData.cFileName,"..")) { printf ("Copy Directory %s\n", FindFileData.cFileName); char indir2[128]={0};char outdir2[128]={0}; strcat(indir2,indir);strcat(indir2,"/");strcat(indir2,FindFileData.cFileName);strcat(indir2,"/"); strcat(outdir2,outdir);strcat(outdir2,"/");strcat(outdir2,FindFileData.cFileName); Copy(indir2,outdir2);//рекурсивный вызов функции } } else//нашли файл { printf ("Copy File %s\n", FindFileData.cFileName); char indir2[128]={0};char outdir2[128]={0}; strcat(indir2,indir);strcat(indir2,"/");strcat(indir2,FindFileData.cFileName); strcat(outdir2,outdir);strcat(outdir2,"/");strcat(outdir2,FindFileData.cFileName); CopyFile (indir2,outdir2, TRUE);//копируем файл } } while(FindNextFile(hFind, &FindFileData));//пока есть что копировать FindClose(hFind); return TRUE; } int main(int argc, char *argv[]) { Copy(argv[1],argv[2]); getch(); return 0; }
0 коммент.:
Отправить комментарий