file-folder-helper/Helpers/HelperRenameToOldMoveDeleteOld.cs
2023-08-06 23:00:38 -07:00

50 lines
1.8 KiB
C#

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<string> deleteFiles = new();
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);
}
}
}
}
}