47 lines
2.0 KiB
C#
47 lines
2.0 KiB
C#
using Microsoft.Extensions.Logging;
|
|
|
|
namespace File_Folder_Helper.ADO2025.PI5;
|
|
|
|
internal static partial class Helper20250421 {
|
|
|
|
internal static void FreeFileSyncChangeCreatedDate(ILogger<Worker> logger, List<string> args) {
|
|
string searchPattern = args[2];
|
|
string[] searchPatterns = args[3].Split('~');
|
|
string sourceDirectory = Path.GetFullPath(args[0]);
|
|
if (searchPatterns.Length != 2)
|
|
throw new NotImplementedException($"Not the correct number of {searchPatterns} were passed!");
|
|
string lastSyncSearch = $"{searchPatterns[0]}=\"";
|
|
string configurationFileSearch = $"{searchPatterns[1]}=\"";
|
|
string[] files = Directory.GetFiles(sourceDirectory, searchPattern, SearchOption.AllDirectories);
|
|
if (files.Length != 1)
|
|
logger.LogWarning("<{files}>(s)", files.Length);
|
|
else
|
|
ChangeCreatedDate(lastSyncSearch, configurationFileSearch, files[0]);
|
|
}
|
|
|
|
private static void ChangeCreatedDate(string lastSyncSearch, string configurationFileSearch, string sourceFile) {
|
|
long epoch;
|
|
string lastSync;
|
|
string[] segments;
|
|
string[] segmentsB;
|
|
DateTime creationTime;
|
|
string configurationFile;
|
|
string[] lines = File.ReadAllLines(sourceFile);
|
|
foreach (string line in lines) {
|
|
segments = line.Split(lastSyncSearch);
|
|
if (segments.Length != 2)
|
|
continue;
|
|
segmentsB = line.Split(configurationFileSearch);
|
|
if (segmentsB.Length != 2)
|
|
continue;
|
|
lastSync = segments[1].Split('"')[0];
|
|
if (!long.TryParse(lastSync, out epoch) || epoch == 0)
|
|
continue;
|
|
configurationFile = segmentsB[1].Split('"')[0];
|
|
if (!File.Exists(configurationFile))
|
|
continue;
|
|
creationTime = new(DateTimeOffset.UnixEpoch.AddSeconds(epoch).ToLocalTime().Ticks);
|
|
File.SetCreationTime(configurationFile, creationTime);
|
|
}
|
|
}
|
|
} |