Skip to content

Instantly share code, notes, and snippets.

@EvilBeaver
Created December 25, 2022 16:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save EvilBeaver/eb0790e228990d8db3e0d736db87a21c to your computer and use it in GitHub Desktop.
Save EvilBeaver/eb0790e228990d8db3e0d736db87a21c to your computer and use it in GitHub Desktop.
Скинул фотки с телефона в кучу, запустил скрипт, отсортировал по годам и месяцам
#Использовать fs
#Использовать progbar
Процедура ВыполнитьСортировку(Знач ИсходныйПуть)
ПрогрессБар = Новый ПрогрессБар();
ВсеФайлы = НайтиФайлы(ИсходныйПуть, ПолучитьМаскуВсеФайлы(), Ложь);
Таблица = Новый ТаблицаЗначений();
Таблица.Колонки.Добавить("Ключ", Новый ОписаниеТипов("Дата"));
Таблица.Колонки.Добавить("Год");
Таблица.Колонки.Добавить("ГодМесяц");
Таблица.Колонки.Добавить("Файл");
Сообщить("Сортирую файлы");
ШагиПрогресса = Новый Соответствие();
Для Каждого Файл Из ВсеФайлы Цикл
ДатаФайла = Файл.ПолучитьВремяИзменения();
СтрФайл = Таблица.Добавить();
СтрФайл.Год = Формат(ДатаФайла, "ДФ='гггг'");
СтрФайл.ГодМесяц = Формат(ДатаФайла, "ДФ='MMММ гггг'");
СтрФайл.Ключ = НачалоМесяца(ДатаФайла);
СтрФайл.Файл = Файл;
ШагиПрогресса.Вставить(СтрФайл.ГодМесяц);
КонецЦикла;
Таблица.Сортировать("Ключ");
ПрогрессБар.Начать(ШагиПрогресса.Количество());
Попытка
ТекущийКлюч = Неопределено;
Для Каждого СтрФайл Из Таблица Цикл
Если СтрФайл.Ключ <> ТекущийКлюч Тогда
ПрогрессБар.СделатьШаг(,, СтрФайл.ГодМесяц);
ТекущийКлюч = СтрФайл.Ключ;
КонецЕсли;
ЦелевойКаталог = ОбъединитьПути(ИсходныйПуть, СтрФайл.Год, СтрФайл.ГодМесяц);
ФС.ОбеспечитьКаталог(ЦелевойКаталог);
ПереместитьФайл(СтрФайл.Файл.ПолноеИмя, ОбъединитьПути(ЦелевойКаталог, СтрФайл.Файл.Имя));
КонецЦикла;
Исключение
ПрогрессБар.Завершить();
ВызватьИсключение;
КонецПопытки;
ПрогрессБар.Завершить();
КонецПроцедуры
Если Не АргументыКоманднойСтроки.Количество() Тогда
Сообщить("Нужно указать путь к сортируемой папке");
ЗавершитьРаботу(1);
КонецЕсли;
ВыполнитьСортировку(АргументыКоманднойСтроки[0]);
Сообщить("Обработка завершена");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment