どうぞ:
//appSettings section:
//<add key="filename-patterns" value="PAVS_*_*_I.pts;omg.*.zip"/>
string[] patterns = ConfigurationManager.AppSettings["filename-patterns"].Split(';');
string sourceDir = @"C:\from\";
string destinationDir = @"C:\to\";
foreach (string pattern in patterns)
{
IEnumerable<string> fileNames = Directory.EnumerateFiles(sourceDir, pattern, SearchOption.AllDirectories);
fileNames.ToList().ForEach(x => File.Move(x, x.Replace(sourceDir, destinationDir)));
}
SearchOption.AllDirectories
最後の引数を に変更して、すべてのツリーをトラバースできることに注意してください。ただし、移動先のフォルダに移動するときは、フォルダ構造が維持されます。
私はこれらのファイルを持っていましたC:\from
:
PAVS_123_1_I.pts
PAVS_123_2_I.pts
whatever.txt
そして、それは適切に機能しました。
更新: 複数のパターンで動作するようにコードを変更しました。そのリストを構成ファイルに保持できるため、新しいファイル パターンごとにアプリを再構築する必要はありません。
UPDATE : コードはappSettings
現在の構成ファイルから読み取られます。への参照を追加することを忘れないでくださいSystem.Configuration
。