using Microsoft.Extensions.Logging; namespace File_Folder_Helper.Helpers; internal static class HelperRenameToOldMoveDeleteOldMerge { internal static void RenameToOldMoveDeleteOld(ILogger log, string argsZero) { string checkDirectory = argsZero[0..^1]; if (!Directory.Exists(checkDirectory)) log.LogInformation("<{checkDirectory}> doesn't exist!", checkDirectory); else { string renameFile; string destinationFile; List deleteFiles = []; string[] moveFiles = Directory.GetFiles(argsZero, "*", SearchOption.TopDirectoryOnly); log.LogInformation("<{moveFiles.Length}> to move", moveFiles.Length); foreach (string moveFile in moveFiles) { destinationFile = string.Concat(checkDirectory, moveFile[argsZero.Length..]); if (!File.Exists(destinationFile)) File.Move(moveFile, destinationFile); else { renameFile = Path.ChangeExtension(destinationFile, string.Concat(Path.GetExtension(destinationFile), ".old")); File.Move(destinationFile, renameFile); File.Move(moveFile, destinationFile); deleteFiles.Add(renameFile); } } log.LogInformation("<{deleteFiles.Count}> to delete", deleteFiles.Count); foreach (string deleteFile in deleteFiles) { for (short i = 0; i < short.MaxValue; i++) { try { File.Delete(deleteFile); break; } catch (Exception) { } Thread.Sleep(500); } } } } }