IZennoList lst = project.Lists["Список профилей в папке"];
List<string> files = Directory.GetFiles(project.Directory + @"/PROFILES").OrderBy(f => File.GetLastWriteTime(f)).ToList();
lst.AddRange(lst);
project.Variables["old_profile"].Value = lst[0];
Благодарю дружище, сейчас протестирую)Список файлов в папке находится в списке "Список профилей в папке"
В примере ниже например, самый старый по дате файл из папки PROFILES (из тех что присутствуют в списке) будет записан в переменную old_profile
C#:IZennoList lst = project.Lists["Список профилей в папке"]; List<string> files = Directory.GetFiles(project.Directory + @"/PROFILES").OrderBy(f => File.GetLastWriteTime(f)).ToList(); lst.AddRange(lst); project.Variables["old_profile"].Value = lst[0];
Список файлов в папке находится в списке "Список профилей в папке"
В примере ниже например, самый старый по дате файл из папки PROFILES (из тех что присутствуют в списке) будет записан в переменную old_profile
C#:IZennoList lst = project.Lists["Список профилей в папке"]; List<string> files = Directory.GetFiles(project.Directory + @"/PROFILES").OrderBy(f => File.GetLastWriteTime(f)).ToList(); lst.AddRange(lst); project.Variables["old_profile"].Value = lst[0];
IZennoList lst = project.Lists["Список"];
List<string> files = Directory.GetFiles(project.Directory + @"{-Project.Directory-}Профили/Нужные профили/").OrderBy(f => File.GetLastWriteTime(f)).ToList();
lst.AddRange(lst);
project.Variables["old_profile"].Value = lst[0];
Project.Directory - это папка проекта, а дальше послеПовторил Ваш код, с нужными мне списками и директориями, но выполняется с ошибкой, в чем я ошибаюсь? Благодарю за ответC#:IZennoList lst = project.Lists["Список"]; List<string> files = Directory.GetFiles(project.Directory + @"{-Project.Directory-}Профили/Нужные профили/").OrderBy(f => File.GetLastWriteTime(f)).ToList(); lst.AddRange(lst); project.Variables["old_profile"].Value = lst[0];
Список и директории условные написал, так-же без {-Project.Directory-} пробовал, разницы нет
+
это продолжение проекта, что бы быть уверенным, что вы сложили верную дорогу, сложите сначала ее с выводом в лог отдельно.return (project.Directory + @"\Профили\Нужные профили\");
IZennoList lst = project.Lists["Список"];
List<string> files = Directory.GetFiles(project.Directory + @"\Профили\Нужные профили\").OrderBy(f => File.GetLastWriteTime(f)).ToList();
lst.AddRange(lst);
project.Variables["old_profile"].Value = lst[0];
Лул, мой косяк был в том что не прогнал куб на взятие файлов из нужной директории. В итоге отработал ваш C# сниппет, но взяло не самый старый файл из папкиПовторил Ваш код, с нужными мне списками и директориями, но выполняется с ошибкой, в чем я ошибаюсь? Благодарю за ответC#:IZennoList lst = project.Lists["Список"]; List<string> files = Directory.GetFiles(project.Directory + @"{-Project.Directory-}Профили/Нужные профили/").OrderBy(f => File.GetLastWriteTime(f)).ToList(); lst.AddRange(lst); project.Variables["old_profile"].Value = lst[0];
Список и директории условные написал, так-же без {-Project.Directory-} пробовал, разницы нет
Данный список ведет на конечную директорию, то есть поддиректорий там нет, ваш прим. /PROFILES
Сейчас тестану, спсProject.Directory - это папка проекта, а дальше после+
это продолжение проекта, что бы быть уверенным, что вы сложили верную дорогу, сложите сначала ее с выводом в лог отдельно.
Либо попробуйте так сразу:C#:return (project.Directory + @"\Профили\Нужные профили\");
C#:IZennoList lst = project.Lists["Список"]; List<string> files = Directory.GetFiles(project.Directory + @"\Профили\Нужные профили\").OrderBy(f => File.GetLastWriteTime(f)).ToList(); lst.AddRange(lst); project.Variables["old_profile"].Value = lst[0];
Тут разбирали ваш вопросВсем доброго времени суток. Ребят, прошу помощи - как брать самый старый файл (по дате) из директории? Буду благодарен за любой ответ :3
Вопрос исчерпан. Не силен в C#, поэтому пришлось потупить. Прежде чем создавать сниппет, нужно добавить using из этого источника, где таится решение.Спасибо большое, гуглил, но не нашел, запрос иначе вводил.
По примеру из вашего совета (в разборе моего вопроса) нашёл решение, но там выводится в лог, а нужно в переменную.
var oldestFile = CodeProject.FastDirectoryEnumerator.EnumerateFiles(@"D:\Рабочий стол").OrderBy(f => f.CreationTime).First();
project.Variables["old_profile"].Value = (oldestFile.Path);
var oldestFile = CodeProject.FastDirectoryEnumerator.EnumerateFiles(project.Directory + @"\Профили\Нужные профили\").OrderBy(f => f.CreationTime).First();
project.Variables["old_profile"].Value = (oldestFile.Path);
Приветствую. Подскажите как брать самый старый профиль (точнее с самой старой датой его изменения) из неопределенной папки, которая задается во входных настройках проекта?Так-же вариант, что-бы брать из условной папки профилей в директории проекта.
C#:var oldestFile = CodeProject.FastDirectoryEnumerator.EnumerateFiles(project.Directory + @"\Профили\Нужные профили\").OrderBy(f => f.CreationTime).First(); project.Variables["old_profile"].Value = (oldestFile.Path);
csharp]var oldestFile = CodeProject.FastDirectoryEnumerator.EnumerateFiles(project.Directory + @"\Профили\Нужные профили\")
csharp]var oldestFile = CodeProject.FastDirectoryEnumerator.EnumerateFiles({-Variable.profiles_dir-})
// Получим файл с самой старой датой имземения
return new DirectoryInfo(project.Variables["переменная с путем до папки"].Value).GetFiles().OrderBy(x => x.LastWriteTime).FirstOrDefault();
// Покажем в лог все файлы, дата изменения которых больше 3х дней
var lst = Directory.GetFiles(project.Variables["переменная с путем до папки"].Value).Select(x => new FileInfo(x)).Where(x => x.LastWriteTime < DateTime.Now.AddDays(-3));
foreach(var s in lst) project.SendInfoToLog(s.ToString());
Если не ошибаюсь, тут можно найти ответ: https://zennolab.com/discussion/threads/data-izmenenija-fajla.23367/post-644016Приветствую. Подскажите как брать самый старый профиль (точнее с самой старой датой его изменения) из неопределенной папки, которая задается во входных настройках проекта?
Условно, чтобы вместо:0
Было что-то вроде:C#:csharp]var oldestFile = CodeProject.FastDirectoryEnumerator.EnumerateFiles(project.Directory + @"\Профили\Нужные профили\")
Также интересна отдельным кубиком проверка "отлежки" профиля (чтобы скрипт проверял что профиль изменялся последний раз более 3 дней назад, например).C#:csharp]var oldestFile = CodeProject.FastDirectoryEnumerator.EnumerateFiles({-Variable.profiles_dir-})
Спасибо, работает!C#:// Получим файл с самой старой датой имземения return new DirectoryInfo(project.Variables["переменная с путем до папки"].Value).GetFiles().OrderBy(x => x.LastWriteTime).FirstOrDefault();
C#:// Покажем в лог все файлы, дата изменения которых больше 3х дней var lst = Directory.GetFiles(project.Variables["переменная с путем до папки"].Value).Select(x => new FileInfo(x)).Where(x => x.LastWriteTime < DateTime.Now.AddDays(-3)); foreach(var s in lst) project.SendInfoToLog(s.ToString());
тогда непонятно, зачем тебе нужно получить самый старый файл....Спасибо, работает!
По поводу проверки отлежки уточню: нужно чтобы код не выводил в лог время отлежки, или количество файлов, соответствующих заданному количеству дней, а было условие вида:
Проверяем дату последнего изменения файла -> если больше Х дней (задается переменной из настроек шаблона) берем в работу, если нет выводим сообщение и завершаем проект.
Чтобы была возможность выбрать: брать самый старый профиль или профиль определенного возраста/даты изменения.тогда непонятно, зачем тебе нужно получить самый старый файл....
выстраивай логику, с локированием для многопотока, чтобы каждый поток взял исключительно
свой профиль с заданным кол-вом дней от последнего редактирования, без ошибки на повторное взятие этого профиля