Day Helpers
net8.0 Wrap in try Zip with directories
This commit is contained in:
parent
0772ab582c
commit
948937d8a5
@ -1,9 +1,9 @@
|
|||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using System.Net.Http.Json;
|
using System.Net.Http.Json;
|
||||||
|
|
||||||
namespace File_Folder_Helper.Helpers;
|
namespace File_Folder_Helper.Day;
|
||||||
|
|
||||||
internal static class HelperDownload
|
internal static class Helper20230906
|
||||||
{
|
{
|
||||||
|
|
||||||
internal static void SaveJson(ILogger log, string argsZero)
|
internal static void SaveJson(ILogger log, string argsZero)
|
31
Day/Helper-2023-10-10.cs
Normal file
31
Day/Helper-2023-10-10.cs
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
|
||||||
|
namespace File_Folder_Helper.Day;
|
||||||
|
|
||||||
|
internal static class Helper20231010
|
||||||
|
{
|
||||||
|
|
||||||
|
internal static void HgCV(ILogger<Worker> logger, string argsZero)
|
||||||
|
{
|
||||||
|
long ticks;
|
||||||
|
DateTime dateTime;
|
||||||
|
TimeSpan timeSpan;
|
||||||
|
string[] segments;
|
||||||
|
DirectoryInfo argsZeroDirectoryInfo = new(argsZero);
|
||||||
|
int padLength = "64-612464-4626_2023-10-10_06;37_AM_2529222011".Length;
|
||||||
|
ReadOnlyCollection<DirectoryInfo> directoryInfoCollection = new(argsZeroDirectoryInfo.GetDirectories().OrderBy(l => l.LastWriteTime).ToArray());
|
||||||
|
foreach (DirectoryInfo directoryInfo in directoryInfoCollection)
|
||||||
|
{
|
||||||
|
segments = directoryInfo.Name.Split('_');
|
||||||
|
if (!long.TryParse(segments[^1], out ticks))
|
||||||
|
continue;
|
||||||
|
dateTime = new(ticks);
|
||||||
|
timeSpan = new(ticks);
|
||||||
|
dateTime = new(ticks);
|
||||||
|
logger.LogInformation("{directory.Name} at {LastWriteTime} took {TotalMinutes} minutes(s)", directoryInfo.Name.PadRight(padLength, ' '), directoryInfo.LastWriteTime, Math.Round(timeSpan.TotalMinutes, 3));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
37
Day/Helper-2023-10-16.cs
Normal file
37
Day/Helper-2023-10-16.cs
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using System.Globalization;
|
||||||
|
|
||||||
|
namespace File_Folder_Helper.Day;
|
||||||
|
|
||||||
|
internal static class Helper20231016
|
||||||
|
{
|
||||||
|
|
||||||
|
internal static void MoveDirectory(ILogger<Worker> logger, string argsZero)
|
||||||
|
{
|
||||||
|
string weekOfYear;
|
||||||
|
string checkDirectory;
|
||||||
|
long ticks = DateTime.Now.AddHours(-84).Ticks;
|
||||||
|
DirectoryInfo argsZeroDirectoryInfo = new(argsZero);
|
||||||
|
Calendar calendar = new CultureInfo("en-US").Calendar;
|
||||||
|
DirectoryInfo[] directoryInfoCollection = argsZeroDirectoryInfo.GetDirectories();
|
||||||
|
string fileShareDirectory = Path.GetDirectoryName(argsZero) ?? throw new Exception();
|
||||||
|
string archiveDirectory = Path.Combine(fileShareDirectory, "Archive");
|
||||||
|
if (!Directory.Exists(archiveDirectory))
|
||||||
|
throw new NotSupportedException();
|
||||||
|
foreach (DirectoryInfo directoryInfo in directoryInfoCollection)
|
||||||
|
{
|
||||||
|
foreach (DirectoryInfo directory in directoryInfo.GetDirectories())
|
||||||
|
{
|
||||||
|
if (directory.CreationTime.Ticks > ticks)
|
||||||
|
continue;
|
||||||
|
weekOfYear = calendar.GetWeekOfYear(directory.CreationTime, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00");
|
||||||
|
checkDirectory = Path.Combine(archiveDirectory, directoryInfo.Name, $"{directory.CreationTime.Year}_Week_{weekOfYear}", directory.CreationTime.ToString("yyyy-MM-dd"));
|
||||||
|
if (!Directory.Exists(checkDirectory))
|
||||||
|
continue;
|
||||||
|
Directory.Move(directory.FullName, Path.Combine(checkDirectory, directory.Name));
|
||||||
|
logger.LogInformation("{directory.CreationTime} - {directory.Name}", directory.CreationTime, directory.Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
21
Day/HelperDay.cs
Normal file
21
Day/HelperDay.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
using File_Folder_Helper.Models;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
|
namespace File_Folder_Helper.Helpers;
|
||||||
|
|
||||||
|
internal static class HelperDay
|
||||||
|
{
|
||||||
|
|
||||||
|
internal static void Select(AppSettings appSettings, ILogger<Worker> logger, List<string> args)
|
||||||
|
{
|
||||||
|
if (args[1] == "Day-Helper-2023-09-06")
|
||||||
|
Day.Helper20230906.SaveJson(logger, args[0]);
|
||||||
|
else if (args[1] == "Day-Helper-2023-10-10")
|
||||||
|
Day.Helper20231010.HgCV(logger, args[0]);
|
||||||
|
else if (args[1] == "Day-Helper-2023-10-16")
|
||||||
|
Day.Helper20231016.MoveDirectory(logger, args[0]);
|
||||||
|
else
|
||||||
|
throw new Exception(appSettings.Company);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -5,11 +5,11 @@
|
|||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
<TargetFramework>net7.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<UserSecretsId>eb9e8f58-fcb5-45bb-9d4d-54f064c485b1</UserSecretsId>
|
<UserSecretsId>eb9e8f58-fcb5-45bb-9d4d-54f064c485b1</UserSecretsId>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="runtime.win-x64.Microsoft.DotNet.ILCompiler" Version="7.0.11" />
|
<PackageReference Include="runtime.win-x64.Microsoft.DotNet.ILCompiler" Version="8.0.0-rc.1.23419.4" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Hosting" Version="7.0.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
|
||||||
<PackageReference Include="System.Text.Json" Version="7.0.3" />
|
<PackageReference Include="System.Text.Json" Version="7.0.3" />
|
||||||
|
@ -16,9 +16,11 @@ internal static class HelperDeleteEmptyDirectories
|
|||||||
foreach (string file in files)
|
foreach (string file in files)
|
||||||
{
|
{
|
||||||
fileInfo = new(file);
|
fileInfo = new(file);
|
||||||
if (fileInfo.LastWriteTime.Ticks > ticks)
|
if (fileInfo.LastWriteTime.Ticks > ticks.Value)
|
||||||
continue;
|
continue;
|
||||||
File.Delete(file);
|
try
|
||||||
|
{ File.Delete(file); }
|
||||||
|
catch (IOException) { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (directories.Length > 0)
|
if (directories.Length > 0)
|
||||||
@ -78,7 +80,7 @@ internal static class HelperDeleteEmptyDirectories
|
|||||||
|
|
||||||
internal static void DeleteOldLogFilesAndDeleteEmptyDirectories(ILogger<Worker> logger, string rootDirectory)
|
internal static void DeleteOldLogFilesAndDeleteEmptyDirectories(ILogger<Worker> logger, string rootDirectory)
|
||||||
{
|
{
|
||||||
long ticks = DateTime.Now.AddHours(-120).Ticks;
|
long ticks = DateTime.Now.AddHours(-84).Ticks;
|
||||||
DeleteOldLogFilesAndDeleteEmptyDirectories(logger, ticks, "*.log*", rootDirectory);
|
DeleteOldLogFilesAndDeleteEmptyDirectories(logger, ticks, "*.log*", rootDirectory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -270,12 +270,30 @@ internal static partial class HelperZipFilesBy
|
|||||||
private static void ZipDirectory(ILogger<Worker> logger, string directory)
|
private static void ZipDirectory(ILogger<Worker> logger, string directory)
|
||||||
{
|
{
|
||||||
logger.LogInformation("{directory}", directory);
|
logger.LogInformation("{directory}", directory);
|
||||||
|
string zipFile = $"{directory}.zip";
|
||||||
|
int skipChars = directory.Length + 1;
|
||||||
string[] files = Directory.GetFiles(directory, "*", SearchOption.AllDirectories);
|
string[] files = Directory.GetFiles(directory, "*", SearchOption.AllDirectories);
|
||||||
using ZipArchive zip = ZipFile.Open($"{directory}.zip", ZipArchiveMode.Create);
|
string[] directories = Directory.GetDirectories(directory, "*", SearchOption.AllDirectories);
|
||||||
foreach (string file in files)
|
ZipArchiveMode zipArchiveMode = File.Exists(zipFile) ? ZipArchiveMode.Update : ZipArchiveMode.Create;
|
||||||
|
for (int i = 1; i < 3; i++)
|
||||||
{
|
{
|
||||||
_ = zip.CreateEntryFromFile(file, Path.GetFileName(file));
|
try
|
||||||
File.Delete(file);
|
{
|
||||||
|
using ZipArchive zip = ZipFile.Open(zipFile, zipArchiveMode);
|
||||||
|
for (int j = 0; j < directories.Length; j++)
|
||||||
|
_ = zip.CreateEntry($"{directories[j][skipChars..]}/");
|
||||||
|
foreach (string file in files)
|
||||||
|
{
|
||||||
|
_ = zip.CreateEntryFromFile(file, file[skipChars..]);
|
||||||
|
File.Delete(file);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
File.Delete(zipFile);
|
||||||
|
zipArchiveMode = ZipArchiveMode.Create;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Directory.Delete(directory, recursive: true);
|
Directory.Delete(directory, recursive: true);
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,7 @@ public class Worker : BackgroundService
|
|||||||
ConsoleKey.T,
|
ConsoleKey.T,
|
||||||
ConsoleKey.U,
|
ConsoleKey.U,
|
||||||
ConsoleKey.V,
|
ConsoleKey.V,
|
||||||
|
ConsoleKey.W,
|
||||||
ConsoleKey.X,
|
ConsoleKey.X,
|
||||||
ConsoleKey.Y,
|
ConsoleKey.Y,
|
||||||
ConsoleKey.Z,
|
ConsoleKey.Z,
|
||||||
@ -115,7 +116,7 @@ public class Worker : BackgroundService
|
|||||||
_Logger.LogInformation("U) Links for Hugo,");
|
_Logger.LogInformation("U) Links for Hugo,");
|
||||||
_Logger.LogInformation("V) VSCode Hope Sort,");
|
_Logger.LogInformation("V) VSCode Hope Sort,");
|
||||||
// W
|
// W
|
||||||
_Logger.LogInformation("X) Download,");
|
_Logger.LogInformation("X) Day Helpers,");
|
||||||
_Logger.LogInformation("Y) Zip file(s) by directory with file,");
|
_Logger.LogInformation("Y) Zip file(s) by directory with file,");
|
||||||
_Logger.LogInformation("Z) Zip file(s) by date,");
|
_Logger.LogInformation("Z) Zip file(s) by date,");
|
||||||
_Logger.LogInformation("Delete) Delete empty directories,");
|
_Logger.LogInformation("Delete) Delete empty directories,");
|
||||||
@ -187,7 +188,7 @@ public class Worker : BackgroundService
|
|||||||
Helpers.HelperVSCodePossibleExtension.Sort(_Logger, _Args);
|
Helpers.HelperVSCodePossibleExtension.Sort(_Logger, _Args);
|
||||||
break;
|
break;
|
||||||
case ConsoleKey.X:
|
case ConsoleKey.X:
|
||||||
Helpers.HelperDownload.SaveJson(_Logger, _Args[0]);
|
Helpers.HelperDay.Select(_AppSettings, _Logger, _Args);
|
||||||
break;
|
break;
|
||||||
case ConsoleKey.Y:
|
case ConsoleKey.Y:
|
||||||
Helpers.HelperZipFilesBy.ZipFilesByDirectoryWithFile(_Logger, _Args[0]);
|
Helpers.HelperZipFilesBy.ZipFilesByDirectoryWithFile(_Logger, _Args[0]);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user