50 lines
1.8 KiB
C#
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 = [];
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
} |