54 lines
1.9 KiB
C#
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);
|
|
}
|
|
|
|
} |