E) Everything delete recursive,

Y) Zip file(s) by directory with file,
This commit is contained in:
2023-10-02 18:14:15 -07:00
parent 219fdda4ec
commit 0772ab582c
19 changed files with 199 additions and 376 deletions

View File

@ -79,8 +79,102 @@ internal static class HelperDeleteEmptyDirectories
internal static void DeleteOldLogFilesAndDeleteEmptyDirectories(ILogger<Worker> logger, string rootDirectory)
{
long ticks = DateTime.Now.AddHours(-120).Ticks;
DeleteOldLogFilesAndDeleteEmptyDirectories(logger, ticks, "*.log", rootDirectory);
DeleteOldLogFilesAndDeleteEmptyDirectories(logger, ticks, "*.log.*", rootDirectory);
DeleteOldLogFilesAndDeleteEmptyDirectories(logger, ticks, "*.log*", rootDirectory);
}
internal static void EverythingDeleteRecursive(ILogger<Worker> logger, string rootDirectory)
{
if (!Path.GetFileName(rootDirectory).StartsWith("_ EverythingDeleteRecursive "))
logger.LogInformation("Directory name must start with {<rootDirectory>}", rootDirectory);
else
{
string[] directories2;
string[] directories3;
string[] directories4;
string[] directories5;
bool errorHappened = false;
string[] directories1 = Directory.GetDirectories(rootDirectory, "*", SearchOption.TopDirectoryOnly);
foreach (string directory1 in directories1)
{
directories2 = Directory.GetDirectories(directory1, "*", SearchOption.TopDirectoryOnly);
foreach (string directory2 in directories2)
{
directories3 = Directory.GetDirectories(directory2, "*", SearchOption.TopDirectoryOnly);
foreach (string directory3 in directories3)
{
directories4 = Directory.GetDirectories(directory3, "*", SearchOption.TopDirectoryOnly);
foreach (string directory4 in directories4)
{
directories5 = Directory.GetDirectories(directory4, "*", SearchOption.TopDirectoryOnly);
foreach (string directory5 in directories5)
{
try
{
logger.LogInformation("{directoryName}", Path.GetFileName(directory5));
Directory.Delete(directory5, recursive: true);
}
catch (Exception)
{ errorHappened = true; }
}
if (!errorHappened)
{
try
{
logger.LogInformation("{directoryName}", Path.GetFileName(directory4));
Directory.Delete(directory4, recursive: true);
}
catch (Exception)
{ errorHappened = true; }
}
}
if (!errorHappened)
{
try
{
logger.LogInformation("{directoryName}", Path.GetFileName(directory3));
Directory.Delete(directory3, recursive: true);
}
catch (Exception)
{ errorHappened = true; }
}
}
if (!errorHappened)
{
try
{
logger.LogInformation("{directoryName}", Path.GetFileName(directory2));
Directory.Delete(directory2, recursive: true);
}
catch (Exception)
{ errorHappened = true; }
}
}
if (!errorHappened)
{
try
{
logger.LogInformation("{directoryName}", Path.GetFileName(directory1));
Directory.Delete(directory1, recursive: true);
}
catch (Exception)
{ errorHappened = true; }
}
}
if (!errorHappened)
{
try
{
logger.LogInformation("{directoryName}", Path.GetFileName(rootDirectory));
Directory.Delete(rootDirectory, recursive: true);
}
catch (Exception)
{ errorHappened = true; }
}
if (!errorHappened)
logger.LogInformation("Finished");
else
logger.LogInformation("Error(s) occurred");
}
}
}

View File

@ -5,7 +5,7 @@ using System.Text.RegularExpressions;
namespace File_Folder_Helper.Helpers;
internal static partial class HelperZipFilesByDate
internal static partial class HelperZipFilesBy
{
[GeneratedRegex("[a-zA-Z0-9]{1,}")]
@ -267,4 +267,82 @@ internal static partial class HelperZipFilesByDate
return result;
}
private static void ZipDirectory(ILogger<Worker> logger, string directory)
{
logger.LogInformation("{directory}", directory);
string[] files = Directory.GetFiles(directory, "*", SearchOption.AllDirectories);
using ZipArchive zip = ZipFile.Open($"{directory}.zip", ZipArchiveMode.Create);
foreach (string file in files)
{
_ = zip.CreateEntryFromFile(file, Path.GetFileName(file));
File.Delete(file);
}
Directory.Delete(directory, recursive: true);
}
internal static void ZipFilesByDirectoryWithFile(ILogger<Worker> logger, string sourceDirectory)
{
string[] files1;
string[] files2;
string[] files3;
string[] files4;
string[] files5;
string[] directories2;
string[] directories3;
string[] directories4;
string[] directories5;
string[] directories1 = Directory.GetDirectories(sourceDirectory, "*", SearchOption.TopDirectoryOnly);
foreach (string directory1 in directories1)
{
files1 = Directory.GetFiles(directory1, "*", SearchOption.TopDirectoryOnly).Where(l => !l.EndsWith(".zip")).ToArray();
if (files1.Length > 0)
{
ZipDirectory(logger, directory1);
continue;
}
directories2 = Directory.GetDirectories(directory1, "*", SearchOption.TopDirectoryOnly);
foreach (string directory2 in directories2)
{
files2 = Directory.GetFiles(directory2, "*", SearchOption.TopDirectoryOnly).Where(l => !l.EndsWith(".zip")).ToArray();
if (files2.Length > 0)
{
ZipDirectory(logger, directory2);
continue;
}
directories3 = Directory.GetDirectories(directory2, "*", SearchOption.TopDirectoryOnly);
foreach (string directory3 in directories3)
{
files3 = Directory.GetFiles(directory3, "*", SearchOption.TopDirectoryOnly).Where(l => !l.EndsWith(".zip")).ToArray();
if (files3.Length > 0)
{
ZipDirectory(logger, directory3);
continue;
}
directories4 = Directory.GetDirectories(directory3, "*", SearchOption.TopDirectoryOnly);
foreach (string directory4 in directories4)
{
files4 = Directory.GetFiles(directory4, "*", SearchOption.TopDirectoryOnly).Where(l => !l.EndsWith(".zip")).ToArray();
if (files4.Length > 0)
{
ZipDirectory(logger, directory4);
continue;
}
directories5 = Directory.GetDirectories(directory4, "*", SearchOption.TopDirectoryOnly);
foreach (string directory5 in directories5)
{
files5 = Directory.GetFiles(directory5, "*", SearchOption.TopDirectoryOnly);
if (files5.Length == 0)
throw new NotSupportedException("Files are too deep!");
else
{
ZipDirectory(logger, directory5);
continue;
}
}
}
}
}
}
}
}