ディレクトリ(フォルダ)をコピーするには

解説

Win32API に CopyFile というファイルをコピーする関数はありますが、ディレクトリをコピーする関数はは今のところ標準では用意されていないので、自作します。

実装方法としては、
・ディレクトリの中のファイルをコピーする処理を作成する方法
・シェル関数を用いる方法
の2つの実現実装方法があります。(他にもあるのかもしれません。)

ディレクトリの中のファイルをコピーする処理を作成する方法の実装内容としては、

  1. CreateDirectory を用いてコピー先のディレクトリを作成します。
  2. コピー元のディレクトリ内のすべてのファイルおよびディレクトリを検索します。
  3. ファイルならば CopyFile を用いてコピーし、ディレクトリならば本関数を再起的に呼び出してコピーします。

シェル関数を用いる方法の実装内容としては、

  1. シェル関数の仕様に従い、コピー元およびコピー先のディレクトリ名の終端を"\0\0"にします。
  2. シェル関数はエクスプローラが行う処理を実行するAPIなので、エクスプローラでディレクトリのコピーを行うときに出るダイアログが出ないようにフラグを設定します。
  3. シェル関数を呼び出し、ディレクトリのコピーを行います。

サンプルコード

ダウンロード

ヘッダーファイルとソースファイル

サンプルプロジェクト