Moved to ADO2024 PI#
Ran SortCodeMethods
This commit is contained in:
65
ADO2024/PI3/Helper-2024-09-10.cs
Normal file
65
ADO2024/PI3/Helper-2024-09-10.cs
Normal file
@ -0,0 +1,65 @@
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Globalization;
|
||||
namespace File_Folder_Helper.ADO2024.PI3;
|
||||
|
||||
internal static partial class Helper20240910
|
||||
{
|
||||
|
||||
internal static void MoveFilesToWeekOfYear(ILogger<Worker> logger, List<string> args)
|
||||
{
|
||||
string day;
|
||||
string year;
|
||||
string yearB;
|
||||
string yearC;
|
||||
string checkFile;
|
||||
FileInfo fileInfo;
|
||||
string weekOfYear;
|
||||
int weekOfYearValue;
|
||||
string checkDirectory;
|
||||
string searchPattern = args[2];
|
||||
ReadOnlyCollection<string> directoryNames;
|
||||
string sourceDirectory = Path.GetFullPath(args[0]);
|
||||
Calendar calendar = new CultureInfo("en-US").Calendar;
|
||||
string[] files = Directory.GetFiles(sourceDirectory, searchPattern, SearchOption.AllDirectories);
|
||||
logger.LogInformation("With search pattern '{SearchPattern}' found {files}", searchPattern, files.Length);
|
||||
foreach (string file in files)
|
||||
{
|
||||
fileInfo = new(file);
|
||||
if (string.IsNullOrEmpty(fileInfo.DirectoryName))
|
||||
continue;
|
||||
checkDirectory = string.Empty;
|
||||
year = $"{fileInfo.LastWriteTime:yyyy}";
|
||||
yearB = $"{fileInfo.LastWriteTime:yyyy}_Year";
|
||||
day = fileInfo.LastWriteTime.ToString("yyyy-MM-dd");
|
||||
directoryNames = Helpers.HelperDirectory.GetDirectoryNames(fileInfo.DirectoryName);
|
||||
weekOfYearValue = calendar.GetWeekOfYear(fileInfo.LastWriteTime, CalendarWeekRule.FirstDay, DayOfWeek.Sunday);
|
||||
yearC = weekOfYearValue < 27 ? $"{fileInfo.LastWriteTime:yyyy}_Year_A" : $"{fileInfo.LastWriteTime:yyyy}_Year_Z";
|
||||
weekOfYear = $"{fileInfo.LastWriteTime.Year}_Week_{weekOfYearValue:00}";
|
||||
foreach (string directoryName in directoryNames)
|
||||
{
|
||||
if (directoryName == year || directoryName == yearB || directoryName == yearC || directoryName == weekOfYear || directoryName == day)
|
||||
continue;
|
||||
checkDirectory = Path.Combine(checkDirectory, directoryName);
|
||||
}
|
||||
if (string.IsNullOrEmpty(checkDirectory))
|
||||
continue;
|
||||
checkDirectory = Path.Combine(checkDirectory, yearC, weekOfYear, day);
|
||||
if (!Directory.Exists(checkDirectory))
|
||||
_ = Directory.CreateDirectory(checkDirectory);
|
||||
checkFile = Path.Combine(checkDirectory, fileInfo.Name);
|
||||
if (checkFile.Length > 256 || checkFile == fileInfo.FullName)
|
||||
continue;
|
||||
try
|
||||
{
|
||||
if (File.Exists(checkFile))
|
||||
continue;
|
||||
File.Move(fileInfo.FullName, checkFile);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{ logger.LogInformation(ex, $"Inner loop error <{fileInfo.FullName}>!"); }
|
||||
}
|
||||
Helpers.HelperDeleteEmptyDirectories.DeleteEmptyDirectories(logger, sourceDirectory);
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user