2016-04-25 21 views
0

I次のディレクトリ構造を持っている:のWindows - 親ディレクトリが存在しない場合にのみ、ファイルをコピーする

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

そして、私は新しいディレクトリにコピーするために探しています。ただし、親フォルダが既に存在する場合は、ファイルの内容にかかわらず、私はそれをコピーしたくありません。

Main2 
+-Parent2 
    +-File7 
    +-File8 

私はMain1からMain2にコピーしていますのであれば、Main1Parent2フォルダはコピーしないだろう、もその内容はだろう。最後に

、それはこのように見える終わる必要があります。

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- 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

ああ、素晴らしい。私はこれが完璧に動作すると思う、ありがとう!私はそれが存在しなければコピーに追加するだけです。 – rjbogz

+0

ええ、それはそれの要点です^^機能を分けておくことで、各機能が何をしているかを確認してください:)これで充分であれば解答としてマークできますか? –

+0

ちょうどそれを実際に素早く試してみたかったですが、うまくいくようです。再度、感謝します! – rjbogz

関連する問題