All are Windows *.lnk files!
This commit is contained in:
@ -297,8 +297,7 @@ public partial class DlibDotNet
|
||||
configurationOutputResolutionsHas = true;
|
||||
if (!runToDoCollectionFirst)
|
||||
break;
|
||||
(filesCollectionRootDirectory, filesCollection) = GetFilesCollectionThenCopyOrMove(ticks, fileSearchFilter, directorySearchFilter, options, outputResolution);
|
||||
filesCollectionCountIsOne = filesCollection.Count == 1;
|
||||
(filesCollectionRootDirectory, filesCollection, filesCollectionCountIsOne) = GetFilesCollectionThenCopyOrMove(ticks, fileSearchFilter, directorySearchFilter, options, outputResolution);
|
||||
notNineCollection = GetNotNineCollection(filesCollection);
|
||||
break;
|
||||
}
|
||||
@ -416,41 +415,57 @@ public partial class DlibDotNet
|
||||
{
|
||||
bool result = false;
|
||||
string[] directories;
|
||||
string seasonDirectory;
|
||||
DirectoryInfo directoryInfo;
|
||||
DateTime dateTime = new(ticks);
|
||||
string rootDirectory = _Configuration.PropertyConfiguration.RootDirectory;
|
||||
string eDistanceContentDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(_Configuration.PropertyConfiguration, nameof(E_Distance), _Configuration.PropertyConfiguration.ResultContent);
|
||||
(int season, string seasonName) = Shared.Models.Stateless.Methods.IProperty.GetSeason(dateTime.DayOfYear);
|
||||
FileSystemInfo fileSystemInfo = new DirectoryInfo(eDistanceContentDirectory);
|
||||
string[] checkDirectories =
|
||||
[
|
||||
Path.Combine(rootDirectory, "Ancestry"),
|
||||
directories = Directory.GetDirectories(_Configuration.PropertyConfiguration.RootDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||
if (directories.Length == 0)
|
||||
result = true;
|
||||
else
|
||||
{
|
||||
string seasonDirectory;
|
||||
DirectoryInfo directoryInfo;
|
||||
DateTime dateTime = new(ticks);
|
||||
string rootDirectory = _Configuration.PropertyConfiguration.RootDirectory;
|
||||
string eDistanceContentDirectory = Property.Models.Stateless.IResult.GetResultsDateGroupDirectory(_Configuration.PropertyConfiguration, nameof(E_Distance), _Configuration.PropertyConfiguration.ResultContent);
|
||||
(int season, string seasonName) = Shared.Models.Stateless.Methods.IProperty.GetSeason(dateTime.DayOfYear);
|
||||
FileSystemInfo fileSystemInfo = new DirectoryInfo(eDistanceContentDirectory);
|
||||
string[] checkDirectories =
|
||||
[
|
||||
Path.Combine(rootDirectory, "Ancestry"),
|
||||
Path.Combine(rootDirectory, "Facebook"),
|
||||
Path.Combine(rootDirectory, "LinkedIn"),
|
||||
rootDirectory,
|
||||
];
|
||||
foreach (string checkDirectory in checkDirectories)
|
||||
{
|
||||
if (checkDirectory == rootDirectory)
|
||||
seasonDirectory = Path.Combine(checkDirectory, $"{dateTime.Year}.{season} {seasonName}");
|
||||
else
|
||||
seasonDirectory = Path.Combine(checkDirectory, $"{dateTime.Year}.{season} {seasonName} {Path.GetFileName(checkDirectory)}");
|
||||
if (!Directory.Exists(seasonDirectory))
|
||||
_ = Directory.CreateDirectory(seasonDirectory);
|
||||
if (result)
|
||||
continue;
|
||||
directories = Directory.GetDirectories(checkDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||
foreach (string directory in directories)
|
||||
foreach (string checkDirectory in checkDirectories)
|
||||
{
|
||||
directoryInfo = new(directory);
|
||||
if (directoryInfo.LastWriteTime > fileSystemInfo.LastWriteTime)
|
||||
if (checkDirectory == rootDirectory)
|
||||
seasonDirectory = Path.Combine(checkDirectory, $"{dateTime.Year}.{season} {seasonName}");
|
||||
else
|
||||
seasonDirectory = Path.Combine(checkDirectory, $"{dateTime.Year}.{season} {seasonName} {Path.GetFileName(checkDirectory)}");
|
||||
if (!Directory.Exists(seasonDirectory))
|
||||
_ = Directory.CreateDirectory(seasonDirectory);
|
||||
if (result)
|
||||
continue;
|
||||
directories = Directory.GetDirectories(checkDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||
foreach (string directory in directories)
|
||||
{
|
||||
result = true;
|
||||
break;
|
||||
directoryInfo = new(directory);
|
||||
if (directoryInfo.LastWriteTime > fileSystemInfo.LastWriteTime)
|
||||
{
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (result)
|
||||
{
|
||||
if (result)
|
||||
{ }
|
||||
}
|
||||
if (!result)
|
||||
{
|
||||
if (!result)
|
||||
{ }
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -1216,7 +1231,55 @@ public partial class DlibDotNet
|
||||
}
|
||||
}
|
||||
|
||||
private (string, ReadOnlyCollection<string[]>) GetFilesCollectionThenCopyOrMove(long ticks, string fileSearchFilter, string directorySearchFilter, ProgressBarOptions options, string outputResolution)
|
||||
private static void CheckForAllWindowsLinks(ReadOnlyCollection<string[]> filesCollection)
|
||||
{
|
||||
string fileFullPath;
|
||||
WindowsShortcut windowsShortcut;
|
||||
foreach (string[] files in filesCollection)
|
||||
{
|
||||
if (files.Length == 0)
|
||||
continue;
|
||||
if (files.All(l => l.EndsWith(".lnk")))
|
||||
{
|
||||
foreach (string file in files)
|
||||
{
|
||||
windowsShortcut = WindowsShortcut.Load(file);
|
||||
if (windowsShortcut.Path is null)
|
||||
{
|
||||
File.Delete(file);
|
||||
continue;
|
||||
}
|
||||
fileFullPath = windowsShortcut.Path;
|
||||
windowsShortcut.Dispose();
|
||||
File.WriteAllText(Path.ChangeExtension(file, ".url"), fileFullPath);
|
||||
File.Delete(file);
|
||||
}
|
||||
throw new NotSupportedException("All are Windows *.lnk files!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static bool IsFilesCollectionCountIsOne(ReadOnlyCollection<string[]> filesCollection)
|
||||
{
|
||||
bool result = true;
|
||||
int count = 0;
|
||||
foreach (string[] files in filesCollection)
|
||||
{
|
||||
if (files.Length == 0)
|
||||
continue;
|
||||
count += 1;
|
||||
if (count > 1)
|
||||
{
|
||||
result = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (result)
|
||||
CheckForAllWindowsLinks(filesCollection);
|
||||
return result;
|
||||
}
|
||||
|
||||
private (string, ReadOnlyCollection<string[]>, bool) GetFilesCollectionThenCopyOrMove(long ticks, string fileSearchFilter, string directorySearchFilter, ProgressBarOptions options, string outputResolution)
|
||||
{
|
||||
ProgressBar progressBar;
|
||||
string filesCollectionRootDirectory = _Configuration.PropertyConfiguration.RootDirectory;
|
||||
@ -1224,6 +1287,7 @@ public partial class DlibDotNet
|
||||
IReadOnlyDictionary<string, string[]> fileGroups = Shared.Models.Stateless.Methods.IPath.GetKeyValuePairs(_Configuration.PropertyConfiguration, cResultsFullGroupDirectory, [_Configuration.PropertyConfiguration.ResultContent]);
|
||||
ReadOnlyCollection<string[]> filesCollection = IDirectory.GetFilesCollection(filesCollectionRootDirectory, directorySearchFilter, fileSearchFilter, useCeilingAverage: false);
|
||||
int count = filesCollection.Select(l => l.Length).Sum();
|
||||
bool filesCollectionCountIsOne = IsFilesCollectionCountIsOne(filesCollection);
|
||||
string message = $") Selecting for ## pattern directory - {(int)Math.Floor(new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds)} total second(s)";
|
||||
progressBar = new(count, message, options);
|
||||
(string[] distinctDirectories, List<(FilePath, string)> toDoCollection) = IDirectory.GetToDoCollection(_Configuration.PropertyConfiguration, filesCollection, fileGroups[_Configuration.PropertyConfiguration.ResultContent], () => progressBar.Tick());
|
||||
@ -1237,7 +1301,7 @@ public partial class DlibDotNet
|
||||
progressBar = new(count, message, options);
|
||||
_ = IDirectory.CopyOrMove(toDoCollection, move: false, moveBack: false, () => progressBar.Tick());
|
||||
progressBar.Dispose();
|
||||
return (filesCollectionRootDirectory, new(filesCollection));
|
||||
return (filesCollectionRootDirectory, new(filesCollection), filesCollectionCountIsOne);
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user