0

すべてのファイル (特定の日付に最後に変更されたもの) を取得し、それらを新しいフォルダー (特定の日付の名前で) に保存する方法はありますか。

サンプル ファイル:

インサイド C:/

Image File     Date Modified

Image001.jpg   11/12/2012
Image002.jpg   11/12/2012
Image003.jpg   11/13/2012
Image004.jpg   11/12/2012

出力は次のようになります。

C:/20121112/

Image001.jpg
Image002.jpg
Image004.jpg  

C:/20121113

Image003.jpg

現在、以下の構文を使用しています。

var mydirectory = new DirectoryInfo("C:/");
DateTime from_date = DateTime.Now.AddDays(-1);
DateTime to_date = DateTime.Now;
var files = directory.GetFiles()
  .Where(file=>file.LastWriteTime >= from_date && file.LastWriteTime <= to_date);

しかし、varファイルを別のフォルダー名に保存する方法はありません。

4

3 に答える 3

6

多分:

var files = Directory.EnumerateFiles(path, "*.jpg", SearchOption.TopDirectoryOnly)
                     .Select(fn => new FileInfo(fn));
var fileDateGroups = files.GroupBy(fi => fi.LastWriteTime.Date);
foreach (var dateGroup in fileDateGroups)
{
    string dir = Path.Combine(@"C:\", dateGroup.Key.ToString("yyyyMMdd"));
    Directory.CreateDirectory(dir);
    foreach (var file in dateGroup)
    {
        string newPath = Path.Combine(dir, file.Name);
        File.Copy(file.FullName, newPath, true);
    }
}

編集:複数のファイル拡張子を検索する場合は、手動でフィルタリングする必要があります:

var allowed = new[]{ ".png", ".jpg" };
var files = Directory.EnumerateFiles(path, "*.*", SearchOption.TopDirectoryOnly)
                     .Where(fn => allowed.Contains(Path.GetExtension(fn)))
                     .Select(fn => new FileInfo(fn));
于 2012-11-12T15:51:04.283 に答える
2

System.IO.FileInfoファイルの作成、削除、および開くためのメソッドを提供するものは、この目的で使用できます。このファイルが最後に変更された日付を取得するFileInfo.LastWriteTimeには、DateTime

string FileName = @"D:\Resources\Image001.jpg"; //Initializes a new string of name FileName as D:\..\Image001.jpg
FileInfo Information = new FileInfo(FileName); //Initializes a new instance of FileInfo to wrap a particular file 
DateTime DateModified = Information.LastWriteTime; //Initializes a new DateTime as Information.LastWriteTime

System.IO.Directory.CreateDirectory(string path)次に、名前を付けて特定のディレクトリを作成するために使用できます。path

注意/: 、\?:、などの無効な文字を含むディレクトリは作成できません*。これは、名前のディレクトリを作成できないことを意味します。11/12/2012

ありがとう、
これがお役に立てば幸いです:)

于 2012-11-12T15:55:33.020 に答える
1

必ず方法があります。ファイルやディレクトリを繰り返し処理したり、新しいものを作成したりするには、Path クラスと Directory クラスを調べてください。フォルダ内に入ると、簡単なグーグル検索でファイルの変更日を読み取る方法を見つけることができるはずです。新しい場所に書き込むためにそれらをキューに入れるだけです。これが混乱を招く場合はお知らせください。コードを投稿して、あなたの努力を示してください。通常、人々はより親切になり、あなたに反対票を投じることが少なくなります:)

于 2012-11-12T15:50:51.273 に答える