TryArchiveFiles
This commit is contained in:
parent
e440664659
commit
a0699ef634
16
.vscode/launch.json
vendored
16
.vscode/launch.json
vendored
@ -13,14 +13,14 @@
|
|||||||
"args": [
|
"args": [
|
||||||
"s",
|
"s",
|
||||||
"X",
|
"X",
|
||||||
"D:/5-Other-Small/Free-File-Sync",
|
"D:/5-Other-Small/Kanban-mestsa003/FI-Backlog-Mesa-Request-List/859-FI-Backlog-Mesa-Request-List/.vscode",
|
||||||
"Day-Helper-2024-08-05",
|
"Day-Helper-2024-08-06",
|
||||||
"*.ffs_gui",
|
"1000",
|
||||||
"lines.md",
|
"D:/Logs",
|
||||||
"C:/Users/phares/AppData/Roaming/FreeFileSync/GlobalSettings.xml",
|
"*.txt",
|
||||||
"5555",
|
"25",
|
||||||
"6666",
|
"4",
|
||||||
"7777",
|
"D:/IFXApps/Logs",
|
||||||
"8888",
|
"8888",
|
||||||
"9999"
|
"9999"
|
||||||
],
|
],
|
||||||
|
@ -53,11 +53,30 @@ internal static partial class Helper20240805
|
|||||||
File.WriteAllText(globalSettingsFile, globalSettingsLines);
|
File.WriteAllText(globalSettingsFile, globalSettingsLines);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void RenameFiles(string find, string replace, string[] ignoreFileNames, string[] confFiles)
|
||||||
|
{
|
||||||
|
string checkFile;
|
||||||
|
foreach (string confFile in confFiles)
|
||||||
|
{
|
||||||
|
if (ignoreFileNames.Contains(confFile))
|
||||||
|
continue;
|
||||||
|
checkFile = confFile.Replace(find, replace);
|
||||||
|
if (File.Exists(checkFile))
|
||||||
|
continue;
|
||||||
|
File.Move(confFile, checkFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
internal static void RenameFiles(ILogger<Worker> logger, List<string> args)
|
internal static void RenameFiles(ILogger<Worker> logger, List<string> args)
|
||||||
{
|
{
|
||||||
|
string find = args[6];
|
||||||
|
string replace = args[7];
|
||||||
string sourceDirectory = Path.GetFullPath(args[0]);
|
string sourceDirectory = Path.GetFullPath(args[0]);
|
||||||
string globalSettingsFile = Path.GetFullPath(args[4]);
|
string globalSettingsFile = Path.GetFullPath(args[4]);
|
||||||
string[] files = Directory.GetFiles(sourceDirectory, args[2], SearchOption.TopDirectoryOnly);
|
string[] files = Directory.GetFiles(sourceDirectory, args[2], SearchOption.TopDirectoryOnly);
|
||||||
|
string[] confFiles = Directory.GetFiles(sourceDirectory, $"*{find}", SearchOption.TopDirectoryOnly);
|
||||||
|
string[] ignoreFileNames = args[8].Split(',').Select(l => Path.Combine(sourceDirectory, l)).ToArray();
|
||||||
|
RenameFiles(find, replace, ignoreFileNames, confFiles);
|
||||||
string checkFile = Path.Combine(sourceDirectory, args[3]);
|
string checkFile = Path.Combine(sourceDirectory, args[3]);
|
||||||
if (files.Length == 0 || !File.Exists(checkFile))
|
if (files.Length == 0 || !File.Exists(checkFile))
|
||||||
logger.LogWarning("No found!");
|
logger.LogWarning("No found!");
|
||||||
|
57
Day/2024-Q3/Helper-2024-08-06.cs
Normal file
57
Day/2024-Q3/Helper-2024-08-06.cs
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using System.Globalization;
|
||||||
|
|
||||||
|
namespace File_Folder_Helper.Day;
|
||||||
|
|
||||||
|
internal static partial class Helper20240806
|
||||||
|
{
|
||||||
|
|
||||||
|
private static void TryArchiveFiles(string sourceDirectory, string pattern, string archiveDirectory, int minimumLength, int days)
|
||||||
|
{
|
||||||
|
string checkFile;
|
||||||
|
FileInfo fileInfo;
|
||||||
|
string weekOfYear;
|
||||||
|
string checkDirectory;
|
||||||
|
string[] directorySegments;
|
||||||
|
DateTime dateTime = DateTime.Now.AddDays(-days);
|
||||||
|
Calendar calendar = new CultureInfo("en-US").Calendar;
|
||||||
|
string[] sourceDirectorySegments = sourceDirectory.Split(Path.DirectorySeparatorChar);
|
||||||
|
string[] files = Directory.GetFiles(sourceDirectory, pattern, SearchOption.AllDirectories);
|
||||||
|
if (sourceDirectorySegments.Length < 1)
|
||||||
|
throw new Exception("Can't be root drive!");
|
||||||
|
foreach (string file in files)
|
||||||
|
{
|
||||||
|
fileInfo = new FileInfo(file);
|
||||||
|
if (string.IsNullOrEmpty(fileInfo.DirectoryName) || fileInfo.IsReadOnly || fileInfo.Length < minimumLength || fileInfo.LastWriteTime < dateTime)
|
||||||
|
continue;
|
||||||
|
directorySegments = fileInfo.DirectoryName.Split(Path.DirectorySeparatorChar);
|
||||||
|
if (directorySegments.Length < sourceDirectorySegments.Length)
|
||||||
|
continue;
|
||||||
|
weekOfYear = $"{fileInfo.LastWriteTime.Year}_Week_{calendar.GetWeekOfYear(fileInfo.LastWriteTime, CalendarWeekRule.FirstDay, DayOfWeek.Sunday):00}";
|
||||||
|
checkDirectory = string.Concat(archiveDirectory, Path.DirectorySeparatorChar, weekOfYear);
|
||||||
|
for (int i = sourceDirectorySegments.Length; i < directorySegments.Length; i++)
|
||||||
|
checkDirectory = string.Concat(checkDirectory, Path.DirectorySeparatorChar, directorySegments[i]);
|
||||||
|
checkDirectory = string.Concat(checkDirectory, Path.DirectorySeparatorChar, fileInfo.LastWriteTime.ToString("yyyy-MM-dd"));
|
||||||
|
if (!Directory.Exists(checkDirectory))
|
||||||
|
_ = Directory.CreateDirectory(checkDirectory);
|
||||||
|
checkFile = Path.Combine(checkDirectory, string.Concat(fileInfo.LastWriteTime.ToString("HH-mm-ss-fff"), "~", fileInfo.Name));
|
||||||
|
if (File.Exists(checkFile))
|
||||||
|
continue;
|
||||||
|
File.Move(fileInfo.FullName, checkFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void ArchiveFiles(ILogger<Worker> logger, List<string> args)
|
||||||
|
{
|
||||||
|
string pattern = args[4];
|
||||||
|
int days = int.Parse(args[6]);
|
||||||
|
logger.LogInformation("Hello");
|
||||||
|
string sourceDirectory = args[0];
|
||||||
|
int minimumLength = int.Parse(args[5]);
|
||||||
|
int millisecondsDelay = int.Parse(args[2]);
|
||||||
|
string archiveDirectory = Path.GetFullPath(args[7]);
|
||||||
|
TryArchiveFiles(sourceDirectory, pattern, archiveDirectory, minimumLength, days);
|
||||||
|
Thread.Sleep(millisecondsDelay);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -87,6 +87,8 @@ internal static class HelperDay
|
|||||||
Day.Helper20240728.DownloadSslCertificates(logger, args);
|
Day.Helper20240728.DownloadSslCertificates(logger, args);
|
||||||
else if (args[1] == "Day-Helper-2024-08-05")
|
else if (args[1] == "Day-Helper-2024-08-05")
|
||||||
Day.Helper20240805.RenameFiles(logger, args);
|
Day.Helper20240805.RenameFiles(logger, args);
|
||||||
|
else if (args[1] == "Day-Helper-2024-08-06")
|
||||||
|
Day.Helper20240806.ArchiveFiles(logger, args);
|
||||||
else
|
else
|
||||||
throw new Exception(appSettings.Company);
|
throw new Exception(appSettings.Company);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user