file-folder-helper/ADO2025/PI4/Helper-2025-01-14.cs
2025-05-17 07:51:53 -07:00

54 lines
1.9 KiB
C#

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<Worker> 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<Worker> logger, List<string> 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);
}
}