ディレクトリ内のファイルを移動する、コピーする
ディレクトリ内のファイルを一気に移動したり、コピーしたいときのソースコードを示します。
引数 dirpath_dst は "d:/vvv" のように指定してください。移動先のディレクトリです。
引数 dirpath_src は "c:/uuu" のように指定してください。移動元のディレクトリです。
引数 flag_move_is_true_copy_is_false で true/false で指定してください。
true のときはファイル移動です、false のときはファイルコピーです。
引数 search_pattern で対象とするファイルを指定します。
"*" だとすべてのファイルを移動またはコピーします。
"*.png" だと png だけ、"*.bmp" だと bmp だけ、"*.txt" だと txt だけ移動またはコピーします。
Directory.GetFiles() で対象のファイルを列挙して配列に格納します。その配列のデータをもとに File.Move() します。ファイルをコピーする場合は File.Copy() します。
using System.IO; の追加をお忘れなく.
public bool FileMoveInTheDirectory( String dirpath_dst, String dirpath_src, bool flag_move_is_true_copy_is_false, String search_pattern )
{
SearchOption sop = SearchOption.AllDirectories;
String[] arr = Directory.GetFiles( dirpath_src, search_pattern, sop );
if ( arr != null )
{
if ( arr.Length > 0 )
{
for ( int k = 0; k < arr.Length; k++ )
{
String fnm = Path.GetFileName( arr[k] );
String filepath_dst = Path.Combine( dirpath_dst, fnm );
try
{
if ( flag_move_is_true_copy_is_false )
{
// ファイルを移動する.
File.Move( arr[k], filepath_dst );
}
else
{
// ファイルをコピーする.
File.Copy( arr[k], filepath_dst );
}
}
catch ( Exception excp )
{
throw new Exception( excp.Message );
}
}
}
}
return true;
}
xcopy や robocopy のバッチコマンドを発行する方法もありますが、オプションがたくさんありすぎて自分でコードを書いたほうがラクだと思います。