Tengo muchos registros en una carpeta, me gustaría solo tomar archivos que tengan la fecha de hoy y ponerlos en el archivo zip.

Aquí está mi código:

static void Main(string[] args)
{
    //Specify todays date
    DateTime todaysDate = DateTime.Today;

    //Create a zip file with the name logs + todays date
    string zipPath = @"C:\Users\Desktop\ZIP\logs" + todaysDate.ToString("yyyyMMdd") + ".zip";
    string myPath = @"C:\Users\Desktop\LOG SEARCH";

    var files = System.IO.Directory.GetFiles(myPath, "*" + todaysDate.ToString("yyyyMMdd") + "*");

    foreach (var file in files)
    {
        Console.WriteLine(file);
    }
}

¿Cómo puedo comprimir files?

1
Tony 6 jul. 2017 a las 21:14

2 respuestas

La mejor respuesta

Entonces, lo que puede hacer es crear una carpeta temporal y luego agregar cada archivo que coincida con la fecha actual. Una vez hecho esto, puede ZipFile.CreateFromDirectory y luego eliminar la carpeta temporal

DateTime todaysDate = DateTime.Today;

//Create a zip file with the name logs + todays date
string zipPath = @"C:\Users\Desktop\ZIP\logs" + todaysDate.ToString("yyyyMMdd") + ".zip";
string myPath = @"C:\Users\Desktop\LOG SEARCH";

string tempPath = @"C:\Users\Desktop\ZIP\logs" + todaysDate.ToString("yyyyMMdd");

var files = System.IO.Directory.GetFiles(myPath, "*" + todaysDate.ToString("yyyyMMdd") + "*");

Directory.CreateDirectory(tempPath);

foreach (var file in files)
{
    File.Copy(file, tempPath + @"\" + System.IO.Path.GetFileName(file));
}

ZipFile.CreateFromDirectory(tempPath, zipPath);

Directory.Delete(tempPath, true);
3
I.B 6 jul. 2017 a las 18:33

Necesita usar System.IO.Compression; y use

 ZipFile.CreateFromDirectory(myPath, zipPath);
0
Urvil Shah 6 jul. 2017 a las 18:17