Доброе Утро! Ребят есть две папки с ДБФ файлами. Как сравнить файлы, чтобы из первой папки удалялись файлы найденные во второй?????? У меня в голову пришло только...
НО ЭТО НЕ РАБОТАЕТ.... т.к. я думаю = СравнениеФайлов не прокатывает!
Помогите неопытному!!!!!!!!!!!!!! Заранее спасибо!
СравнениеФайлов = НайтиФайлы(Папка2,МаскаФайла,Ложь);
СравнитьФайлы = НайтиФайлы(Папка1,МаскаФайла,Ложь);
Для каждого Файл из СравнитьФайлы Цикл
Если Файл = СравнениеФайлов Тогда
Файл.Удалить();
КонецЕсли;
КонецЦикла;
НО ЭТО НЕ РАБОТАЕТ.... т.к. я думаю = СравнениеФайлов не прокатывает!
Помогите неопытному!!!!!!!!!!!!!! Заранее спасибо!
Найденные решения
(1) Получить все файлы в папке 1;
Получить все файлы в папке 2;
сравнить по наименованию файла (цикл в цикле), если есть одинаковые, то записать имя файла в массив для последующего удаления;
Удалить файлы по именам из массива;
Получить все файлы в папке 2;
сравнить по наименованию файла (цикл в цикле), если есть одинаковые, то записать имя файла в массив для последующего удаления;
Удалить файлы по именам из массива;
НайденныеФайлы1 = НайтиФайлы(ИмяКаталога1, "*.dbf");
НайденныеФайлы2 = НайтиФайлы(ИмяКаталога2, "*.dbf");
Для Каждого ф1 из НайденныеФайлы1 Цикл
Для Каждого ф2 из НайденныеФайлы2 Цикл
// Сравнение и т.д.
КонецЦикла;
КонецЦикла;
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Получить все файлы в папке 1;
Получить все файлы в папке 2;
сравнить по наименованию файла (цикл в цикле), если есть одинаковые, то записать имя файла в массив для последующего удаления;
Удалить файлы по именам из массива;
Получить все файлы в папке 2;
сравнить по наименованию файла (цикл в цикле), если есть одинаковые, то записать имя файла в массив для последующего удаления;
Удалить файлы по именам из массива;
НайденныеФайлы1 = НайтиФайлы(ИмяКаталога1, "*.dbf");
НайденныеФайлы2 = НайтиФайлы(ИмяКаталога2, "*.dbf");
Для Каждого ф1 из НайденныеФайлы1 Цикл
Для Каждого ф2 из НайденныеФайлы2 Цикл
// Сравнение и т.д.
КонецЦикла;
КонецЦикла;
(2) что то не удаляет...
СравнениеФайлов = НайтиФайлы(РАЗНЕСЕНО,МаскаФайла,Ложь);
СравнитьФайлы = НайтиФайлы(НЕРАЗНЕСЕНО,МаскаФайла,Ложь);
Для каждого Файл1 из СравнитьФайлы Цикл
для каждого Файл2 из СравнениеФайлов Цикл
если Файл1.ПолноеИмя = Файл2.ПолноеИмя; тогда
Файл1.Удалить;
конецесли;
КонецЦикла;
КонецЦикла;
Показать
(2) (12) я короче подзавис)) файлы удаляет нормально...проблема в другом... у меня есть "папка3" в ней много "подпапок"(и в ней же находятся папка1 и папка2). внешняя обработка- обрабатывает все файлы в Папке3 и в подпапках...т.е. помимо нужных файлов она обрабатывает "Папка 2 " которую обрабатывать ненужно.... короче копец))) можно как нибудь указать чтобы обрабатывала все кроме папка1 и папка2...
И подскажите пожалуйста как удалить из КаталогВременныхФайлов() файлы, а то почему то не удаляются))
МаскаФайла = "*.dbf";
НайденныеФайлы = НайтиФайлы(ПАПКА3,МаскаФайла,Истина);
Для Каждого ФФ из НайденныеФайлы Цикл
Если ФФ.ЭтоКаталог() Тогда
Продолжить;
КонецЕсли;
КороткоеИмя = СокрЛП(Лев(ФФ.ИмяБезРасширения, 8))+".dbf";
НашПолныйПутьФайла = КаталогВременныхФайлов() + КороткоеИмя;
КопироватьФайл(ФФ.ПолноеИмя,НашПолныйПутьФайла);
ФайлДБФ = Новый XBase;
ФайлДБФ.ОткрытьФайл(НашПолныйПутьФайла,,Истина);
ФайлДБФ.Первая();
Реквизит1.Очистить();
Пока НЕ ФайлДБФ.ВКонце() Цикл
Если Лев(ФайлДБФ.Account,3) = УчастокКод тогда
НоваяСтрока = Реквизит1.Добавить();
........... ........
КонецЕсли;
ФайлДБФ.Следующая();
КонецЦикла;
ФайлДБФ.ЗакрытьФайл();
НовыйДБФ = Новый XBase;
............ .............
Сумма = Реквизит1.Итог("Sum");
Количество = Реквизит1.Количество();
Каталог = ПАПКА1 + "\" + КороткоеИмя;
НовыйДБФ.СоздатьФайл(Каталог,);
НовыйДБФ.Записать();
Для Каждого СтрТаб Из Реквизит1 Цикл
НовыйДБФ.Добавить();
............ ..........
Конеццикла;
НовыйДБФ.ЗакрытьФайл();
ПереместитьФайл(Каталог,ПАПКА1 + "\" + ФФ.ИмяБезРасширения + "Sum"+ Сумма + "k" + Количество + ".dbf");
КонецЦикла;
ПоказатьИ подскажите пожалуйста как удалить из КаталогВременныхФайлов() файлы, а то почему то не удаляются))
(14)
У метода НайтиФайлы есть 3 параметр.
Если его поставить Ложь, то будет искать только в текущем каталоге.
Далее можно в цикле проверять, если текущий файл это каталог, то запускать еще раз поиск, если в этом каталоге нужно искать.
У метода НайтиФайлы есть 3 параметр.
НайтиФайлы (FindFiles)
Синтаксис:
НайтиФайлы(<Путь>, <Маска>, <ИскатьВПодкаталогах>)
Синтаксис:
НайтиФайлы(<Путь>, <Маска>, <ИскатьВПодкаталогах>)
Если его поставить Ложь, то будет искать только в текущем каталоге.
Далее можно в цикле проверять, если текущий файл это каталог, то запускать еще раз поиск, если в этом каталоге нужно искать.
(14)
При обходе в цикла файлов анализируйте свойство "ПолноеИмя" - это полный путь к файлу. Будет в виде "С:\Папка3\Папка1\Файл1". Попробуйте функции для работы со строками, например СтрНайти(). И если нашли, что в полном имени файла содержится каталог, который вам обрабатывать не нужно, то переходите к обработке следующего файла.
можно как нибудь указать чтобы обрабатывала все кроме папка1 и папка2.
При обходе в цикла файлов анализируйте свойство "ПолноеИмя" - это полный путь к файлу. Будет в виде "С:\Папка3\Папка1\Файл1". Попробуйте функции для работы со строками, например СтрНайти(). И если нашли, что в полном имени файла содержится каталог, который вам обрабатывать не нужно, то переходите к обработке следующего файла.
Если СтрНайти(ФФ.ПолноеИмя, "\папка1\") > 0 Тогда
Продолжить;
КонецЕсли;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот