C++でのフォルダ丸ごとコピーの方法。
私は以下のような関数を作って、fromに元のパス名、toにコピー先のパス名を入力するようにしています。
WindowsAPIを使っているので、CString部分をTCHARとかで書き換えればVC以外でも動くはず。
ソース。
- int folderCopy( CString from, CString to )
- {
- SHFILEOPSTRUCT tSHFile;
- tSHFile.hwnd = ::GetDesktopWindow();
- tSHFile.wFunc = FO_COPY;
- tSHFile.fFlags = FOF_SILENT | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI;
- tSHFile.fAnyOperationsAborted = TRUE;
- tSHFile.hNameMappings = NULL;
- tSHFile.lpszProgressTitle = "";
- // パス名のCStringの末尾に\0をつけて設定
- from += "0";
- to += "0";
- from.SetAt( from.GetLength()-1, NULL );
- to.SetAt( to.GetLength()-1, NULL );
- tSHFile.pFrom = from;
- tSHFile.pTo = to;
- return SHFileOperation( &tSHFile ); // 実行
- }
こんな感じで。