using Microsoft.Extensions.Logging; namespace File_Folder_Helper.ADO2025.PI4; internal static partial class Helper20250114 { private static void Rename(string[] directories, string dateFormat) { string[] files; DateTime dateTime; FileInfo fileInfo; string checkDirectory; foreach (string directory in directories) { dateTime = DateTime.MinValue; files = Directory.GetFiles(directory, "*", SearchOption.AllDirectories); foreach (string file in files) { fileInfo = new(file); if (dateTime > fileInfo.LastWriteTime) continue; dateTime = fileInfo.LastWriteTime; } if (dateTime == DateTime.MinValue) continue; checkDirectory = Path.Combine(Path.GetDirectoryName(directory) ?? throw new Exception(), dateTime.ToString(dateFormat)); if (checkDirectory != directory) { if (Directory.Exists(checkDirectory)) continue; Directory.Move(directory, checkDirectory); } Directory.SetLastWriteTime(checkDirectory, dateTime); } } private static void Rename(ILogger logger, string sourceDirectory, string searchPattern, string dateFormat) { string[] directories = Directory.GetDirectories(sourceDirectory, searchPattern); logger.LogInformation("directories: {directories}", directories.Length); Rename(directories, dateFormat); } internal static void Rename(ILogger logger, List args) { string dateFormat = args[3]; string[] searchPatterns = args[2].Split('~'); string sourceDirectory = Path.GetFullPath(args[0]); foreach (string searchPattern in searchPatterns) Rename(logger, sourceDirectory, searchPattern, dateFormat); } }