Enhance Rename functionality to create a 'DUP' directory for duplicate files and improve logging for file operations
This commit is contained in:
@ -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) {
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user