2016-04-25 3 views
0

I имеет следующую структуру каталогов:для Windows - Копирование файлов только если родительский каталог не существует

Main1 
+-Parent1 
    +-File1 
    +-File2 
+-Parent2 
    +-File3 
    +-File4 
+-Parent3 
    +-File5 
    +-File6 
... 

И я ищу, чтобы скопировать в новый каталог. Однако, если папка родителя уже существует, независимо от содержимого файла, я не хочу ее копировать.

Main2 
+-Parent2 
    +-File7 
    +-File8 

Так что, если я копирую от Main1Main2 до, то Parent2 папка в Main1 бы не копировать, не будет его содержимое.

В конце концов, он должен в конечном итоге выглядит так:

Main1 
+-Parent2 
    +-File3 
    +-File4 

Main2 
+-Parent1 
    +-File1 
    +-File2 
+-Parent2 
    +-File7 
    +-File8 
+-Parent3 
    +-File5 
    +-File6 
... 
+0

Возможный дубликат [Как я могу получить список файлов в каталоге с помощью C или C++?] (Http://stackoverflow.com/questions/612097/how-can-i-get-the- list-of-files-in-a-directory-using-c-or-c) –

ответ

2

Это код, который я использую для чтения списка папок в любой папке. Вы можете использовать это, чтобы получить то, что вы просили.

// http://stackoverflow.com/questions/612097/how-can-i-get-the-list-of-files-in-a-directory-using-c-or-c herohuyongtao 
std::vector<std::string> get_all_folder_names_within_folder(std::string folder) 
{ 
    std::vector<std::string> names; 
    char search_path[200]; 
    sprintf_s(search_path, 200, "%s/*.*", folder.c_str()); 
    WIN32_FIND_DATA fd; 
    HANDLE hFind = ::FindFirstFile(search_path, &fd); 
    int i = 0; 
    if(hFind != INVALID_HANDLE_VALUE) { 
     do { 
      // read all (real) files in current folder 
      // , delete '!' read other 2 default folder . and .. 
      if((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { 
       if (i >= 2){ 
        names.push_back(fd.cFileName); 
       } 
      } 
      i++; 
     }while(::FindNextFile(hFind, &fd)); 
     ::FindClose(hFind); 
    } 
    return names; 
} 
+0

Ahh, удивительный. Я думаю, что это сработает отлично, спасибо! Я просто добавлю копию, если она не существует. – rjbogz

+0

Да, это его суть ^^ Сохраняйте функции отдельно, так что каждая функция делает то, что она должна :) Не могли бы вы пометить ответ как разрешенный, если этого достаточно? –

+0

Просто хотел протестировать его очень быстро, кажется, все работает нормально. Еще раз спасибо! – rjbogz

 Смежные вопросы

  • Нет связанных вопросов^_^