This commit is contained in:
2024-09-10 17:57:10 -07:00
parent db24568cb4
commit 5eac175e4b
3 changed files with 31 additions and 10 deletions

View File

@ -1,4 +1,5 @@
using Microsoft.Extensions.Logging;
using System.Collections.ObjectModel;
using System.Globalization;
namespace File_Folder_Helper.Day.Q32024;
@ -7,23 +8,39 @@ internal static partial class Helper20240910
internal static void MoveFilesToWeekOfYear(ILogger<Worker> logger, List<string> args)
{
string day;
string year;
string checkFile;
FileInfo fileInfo;
string weekOfYear;
string checkDirectory;
string searchPattern = args[2];
string sourceDirectory = args[0];
ReadOnlyCollection<string> directoryNames;
string searchPattern = Path.GetFullPath(args[2]);
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);
FileInfo[] collection = files.Select(l => new FileInfo(l)).ToArray();
foreach (FileInfo fileInfo in collection)
foreach (string file in files)
{
fileInfo = new(file);
if (string.IsNullOrEmpty(fileInfo.DirectoryName))
continue;
checkDirectory = string.Empty;
year = fileInfo.LastWriteTime.ToString("yyyy");
day = fileInfo.LastWriteTime.ToString("yyyy-MM-dd");
directoryNames = Helpers.HelperDirectory.GetDirectoryNames(fileInfo.DirectoryName);
weekOfYear = $"{fileInfo.LastWriteTime.Year}_Week_{calendar.GetWeekOfYear(fileInfo.LastWriteTime, CalendarWeekRule.FirstDay, DayOfWeek.Sunday):00}";
checkDirectory = Path.Combine(sourceDirectory, weekOfYear, fileInfo.LastWriteTime.ToString("yyyy-MM-dd"));
foreach (string directoryName in directoryNames)
{
if (directoryName == year || directoryName == weekOfYear || directoryName == day)
continue;
checkDirectory = Path.Combine(checkDirectory, directoryName);
}
checkDirectory = Path.Combine(checkDirectory, year, weekOfYear, day);
if (!Directory.Exists(checkDirectory))
_ = Directory.CreateDirectory(checkDirectory);
checkFile = Path.Combine(checkDirectory, fileInfo.Name);
if (checkFile == fileInfo.FullName)
if (checkFile.Length > 256 || checkFile == fileInfo.FullName)
continue;
try
{
@ -32,8 +49,9 @@ internal static partial class Helper20240910
File.Move(fileInfo.FullName, checkFile);
}
catch (Exception ex)
{ logger.LogInformation(ex, "Inner loop error!"); }
{ logger.LogInformation(ex, $"Inner loop error <{fileInfo.FullName}>!"); }
}
Helpers.HelperDeleteEmptyDirectories.DeleteEmptyDirectories(logger, sourceDirectory);
}
}