A basic little console app I threw together. You can simply drag a folder onto it to get it going. Great recursion example...
Uses the Ionic zip library for zip functions. (You will want to save the zip less often if dealing with large files.)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using Ionic.Zip;
namespace MoveAndArchive
{
class Program
{
static void Main(string[] args)
{
try
{
DirectoryInfo root;
DateTime cutoff;
ZipFile destZIP = new ZipFile(Directory.GetParent(
System.Reflection.Assembly.GetExecutingAssembly().Location) +
@"\" + DateTime.Now.ToString("yyyy_MM_dd_HHmmss") + ".zip");
if (args.Length > 0)
{
root = new DirectoryInfo(args[0]);
Console.WriteLine("Source Directory: " + root.FullName);
}
else
{
Console.Write("Enter Source Directory: ");
root = new DirectoryInfo(Console.ReadLine());
}
Console.Write("Enter a cutoff (last) date to copy files from (Enter for all): ");
string cutoffString = Console.ReadLine();
cutoff = (cutoffString == string.Empty ? DateTime.MaxValue : DateTime.Parse(cutoffString));
MoveAll(destZIP, cutoff, root, root);
}
catch (Exception ex)
{
Console.WriteLine("\nERROR: " + ex.Message);
}
Console.WriteLine("\nCompleted.\n");
Console.ReadKey();
}
static void MoveAll(ZipFile Zip, DateTime Cutoff, DirectoryInfo Root, DirectoryInfo Dir)
{
string zipPath = Dir.FullName.Replace(Root.FullName, string.Empty);
if (zipPath != string.Empty)
{
Console.WriteLine("Directory: " + zipPath);
Zip.AddDirectoryByName(zipPath);
}
FileInfo[] files = Dir.GetFiles();
for (int i = 0; i < files.Length; i++)
{
if (files[i].LastWriteTime > Cutoff) continue;
Console.WriteLine(DateTime.Now.ToString() + " ZIP: " + files[i].FullName);
Zip.AddFile(files[i].FullName, zipPath == string.Empty ? @"\" : zipPath);
Zip.Save();
File.Delete(files[i].FullName);
}
foreach (DirectoryInfo d in Dir.GetDirectories()) MoveAll(Zip, Cutoff, Root, d);
}
}
}
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.