using Microsoft.Extensions.Logging; namespace File_Folder_Helper.ADO2025.PI6; internal static partial class Helper20250803 { internal static void CreatedDateOffset(ILogger logger, List args) { logger.LogInformation(args[0]); logger.LogInformation(args[1]); logger.LogInformation(args[2]); logger.LogInformation(args[3]); logger.LogInformation(args[4]); logger.LogInformation(args[5]); int years = int.Parse(args[3]) * -1; if (args[4] != "Years") { throw new NotImplementedException($"{args[4]} != Days"); } string checkFile; FileInfo fileInfo; DateTime dateTime; string searchPattern = args[2]; string fileNameWithoutExtension; string fileNameWithoutExtensionOut; string sourceDirectory = Path.GetFullPath(args[0].Split('~')[0]); string destinationDirectory = Path.GetFullPath(args[5].Split('~')[0]); if (!Directory.Exists(destinationDirectory)) { _ = Directory.CreateDirectory(destinationDirectory); } string[] files = Directory.GetFiles(sourceDirectory, searchPattern, SearchOption.AllDirectories); foreach (string file in files) { fileInfo = new(file); fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fileInfo.FullName); fileNameWithoutExtensionOut = fileNameWithoutExtension[^1] == '9' ? $"{fileNameWithoutExtension[..^1]}7" : fileNameWithoutExtension[^1] == '1' ? $"{fileNameWithoutExtension[..^1]}3" : fileNameWithoutExtension; checkFile = Path.Combine(destinationDirectory, $"{fileNameWithoutExtensionOut}{fileInfo.Extension}"); if (File.Exists(checkFile)) { logger.LogWarning("<{file}> already exists!", checkFile); continue; } File.Copy(file, checkFile); dateTime = new DateTime(fileInfo.LastWriteTime.Year + years, fileInfo.LastWriteTime.Month, fileInfo.LastWriteTime.Day, fileInfo.LastWriteTime.Hour, fileInfo.LastWriteTime.Minute, fileInfo.LastWriteTime.Second); File.SetCreationTime(checkFile, dateTime); } } }