Enhance Rename functionality to create a 'DUP' directory for duplicate files and improve logging for file operations

This commit is contained in:
2025-11-10 17:07:55 -07:00
parent 23db474f53
commit 097a6c0130
4 changed files with 33 additions and 6 deletions

View File

@ -40,9 +40,14 @@ internal static partial class Helper20250701 {
segments = column.Split('~');
columnMapping.Add(segments[0], segments[1]);
}
string[] directories = Directory.GetDirectories(sourceDirectory, "*", SearchOption.TopDirectoryOnly);
List<string> directories = Directory.GetDirectories(sourceDirectory, "*", SearchOption.TopDirectoryOnly).ToList();
if (directories.Count == 0) {
directories.Add(sourceDirectory);
}
ProcessDataStandardFormatTo(logger, sourceDirectory, searchPattern, sizeFilter, timeColumn, extension, columnMapping.AsReadOnly(), destinationDirectory, directories.AsReadOnly());
Helpers.HelperDeleteEmptyDirectories.DeleteEmptyDirectories(logger, sourceDirectory);
if (directories.Count > 1) {
Helpers.HelperDeleteEmptyDirectories.DeleteEmptyDirectories(logger, sourceDirectory);
}
}
private static void ProcessDataStandardFormatTo(ILogger<Worker> logger, string sourceDirectory, string searchPattern, int sizeFilter, string timeColumn, string extension, ReadOnlyDictionary<string, string> columnMapping, string destinationDirectory, ReadOnlyCollection<string> directories) {

View File

@ -158,9 +158,14 @@ internal static partial class Helper20250709 {
int sizeFilter = int.Parse(args[3]);
string sourceDirectory = Path.GetFullPath(args[0].Split('~')[0]);
string destinationDirectory = Path.GetFullPath(args[6].Split('~')[0]);
string[] directories = Directory.GetDirectories(sourceDirectory, "*", SearchOption.TopDirectoryOnly);
List<string> directories = Directory.GetDirectories(sourceDirectory, "*", SearchOption.TopDirectoryOnly).ToList();
if (directories.Count == 0) {
directories.Add(sourceDirectory);
}
JavaScriptObjectNotationTo(sourceDirectory, searchPattern, sizeFilter, extension, destinationDirectory, directories.AsReadOnly());
Helpers.HelperDeleteEmptyDirectories.DeleteEmptyDirectories(logger, sourceDirectory);
if (directories.Count > 1) {
Helpers.HelperDeleteEmptyDirectories.DeleteEmptyDirectories(logger, sourceDirectory);
}
}
private static void JavaScriptObjectNotationTo(string sourceDirectory, string searchPattern, int sizeFilter, string extension, string destinationDirectory, ReadOnlyCollection<string> directories) {

View File

@ -93,6 +93,7 @@ internal static partial class Helper20250926 {
} else {
logger.LogInformation("rename to '{checkPath}'", checkPath);
File.Move(file, checkPath);
continue;
}
} catch {
logger.LogWarning("skipped (error) {TotalHours} hour(s) -> '{FileInfo}'", file, (DateTime.Now - new FileInfo(file).LastWriteTime).TotalHours);
@ -117,6 +118,7 @@ internal static partial class Helper20250926 {
string directoryName;
string[] directories;
string destinationDirectory;
string destinationDirectoryB;
FileInfo[] fileInfoCollection;
foreach (string sourceDirectory in sourceDirectories) {
directories = Directory.GetDirectories(sourceDirectory, "*", SearchOption.TopDirectoryOnly);
@ -132,6 +134,10 @@ internal static partial class Helper20250926 {
if (!Directory.Exists(destinationDirectory)) {
_ = Directory.CreateDirectory(destinationDirectory);
}
destinationDirectoryB = Path.Combine(directory, segmentsB[0], "DUP");
if (!Directory.Exists(destinationDirectoryB)) {
_ = Directory.CreateDirectory(destinationDirectoryB);
}
files = Directory.GetFiles(directory, searchPattern, SearchOption.TopDirectoryOnly);
logger.LogInformation("With search pattern '{SearchPattern}' found {files} file(s)", searchPattern, files.Length);
fileInfoCollection = files.Select(f => new FileInfo(f)).ToArray();
@ -173,10 +179,18 @@ internal static partial class Helper20250926 {
if (checkFile == fileInfo.Name) {
logger.LogDebug("skipped (match) '{checkFile}'", checkFile);
} else if (File.Exists(checkPath)) {
logger.LogInformation("skipped (exists) '{checkPath}'", checkPath);
checkPath = Path.Combine(destinationDirectoryB, checkFile);
if (File.Exists(checkPath)) {
logger.LogInformation("skipped (exists) '{checkPath}'", checkPath);
} else {
logger.LogInformation("rename to '{checkPath}'", checkPath);
File.Move(fileInfo.FullName, checkPath);
continue;
}
} else {
logger.LogInformation("rename to '{checkPath}'", checkPath);
File.Move(fileInfo.FullName, checkPath);
continue;
}
} catch {
logger.LogWarning("skipped (error) {TotalHours} hour(s) -> '{FileInfo}'", (DateTime.Now - fileInfo.LastWriteTime).TotalHours, fileInfo.FullName);

View File

@ -42,7 +42,10 @@ internal static partial class Helper20251022 {
string searchPattern = args[2];
string sourceDirectory = Path.GetFullPath(args[0].Split('~')[0]);
string destinationDirectory = Path.GetFullPath(args[3].Split('~')[0]);
string[] directories = Directory.GetDirectories(sourceDirectory, "*", SearchOption.TopDirectoryOnly);
List<string> directories = Directory.GetDirectories(sourceDirectory, "*", SearchOption.TopDirectoryOnly).ToList();
if (directories.Count == 0) {
directories.Add(sourceDirectory);
}
ReadOnlyDictionary<string, List<string>> files = GetFiles(logger, searchPattern, directories.AsReadOnly());
CombineFiles(logger, destinationDirectory, files);
}