E) Everything delete recursive,
Y) Zip file(s) by directory with file,
This commit is contained in:
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user