フォルダの配下も含めて、指定したキーワードが含まれるファイルを検索して
見つかったファイルを指定のフォルダにコピーするサンプルです。
Directory.GetFiles(String, String, SearchOption)
ディレクトリからファイルを検索します。
ディレクトリ | 検索対象のディレクトリ |
検索パターン | ワイルドカード(*)を含めたファイル名 |
SearchOption | TopDirectoryOnly…配下を含めないで検索 AllDirectories…配下を含めて検索 |
File.Copy(String, String, Boolean)
ファイルをコピーします。
コピー元 | ファイル名のフルパス |
コピー先 | ファイル名のフルパス |
上書きの有無 | true…上書き false…上書きしない |
サンプルの画面はこんな感じです。

サンプルの内容
①コピー元ディレクトリから検索ファイル名にマッチするものを取得する
②見つかったファイルをリストボックスに追加する
③見つかったファイルをコピー先ディレクトリにコピーする
です。
この部品を画面に配置します。
No | 名称 | name | 部品 |
① | コピー元ディレクトリ(見出し) | label1 | Label |
② | コピー元ディレクトリ | txtFromDir | TextBox |
③ | コピー先ディレクトリ(見出し) | label2 | Label |
④ | コピー先ディレクトリ | txtToDir | TextBox |
⑤ | 検索ファイル名(見出し) | label3 | Label |
⑥ | 検索ファイル名 | txtSearchPattern | TextBox |
⑦ | コピーされるファイル(見出し) | label4 | Label |
⑧ | ファイル一覧 | lstFileList | ListBox |
⑨ | 実行 | btnExec | Button |
プログラミング
言語:C#
using System.IO;
/// <summary>
/// 実行ボタンクリック処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnExec_Click(object sender, EventArgs e)
{
// コピー元ディレクトリ
string fromDir = txtFromDir.Text;
// コピー先ディレクトリ
string toDir = txtToDir.Text;
// 検索ファイル名
string sarchPattern = txtSearchPattern.Text;
// コピー元ディレクトリから検索ファイル名にマッチするものを取得する
string[] files = Directory.GetFiles(fromDir,
sarchPattern,
System.IO.SearchOption.AllDirectories);
// 見つかったファイルをリストボックスに追加する
lstFileList.Items.AddRange(files);
// 見つかったファイル分ループする
foreach (string f in files)
{
// ファイルをコピー先ディレクトリにコピーする
File.Copy(f, Path.Combine(toDir, System.IO.Path.GetFileName(f)), true);
}
}
実行結果
実行前

実行後
3ファイルコピーされました。

コピー元ディレクトリのTREE

コピーされたファイル

以上です。