|
Каким образом перебрать файлы в каталогах и подкаталогах? | ☑ | ||
---|---|---|---|---|
0
Прапор Лящук
10.07.08
✎
10:00
|
Как можно в 7.7 реализовать перебор файлов в исходном каталоге, а также всех файлов в подкаталогах?
|
|||
1
Heckfy
10.07.08
✎
10:01
|
Ищи обработку, типа, сканированиеКаталога.ert.
|
|||
2
dk
10.07.08
✎
10:08
|
||||
3
ДенисЧ
10.07.08
✎
10:12
|
фс.найтипервыйфайл/фс.найтиследующийфайл
+ фс.атрибутыФАйла + рекурсия. Такое пишут на первом курсе. ПРавда, Для первого класса задача слегка тяжеловата, согласен... |
|||
4
Impressing3
10.07.08
✎
10:16
|
Забавно)) а зачем перебор файлов то нужен?..
|
|||
5
Прапор Лящук
10.07.08
✎
10:16
|
ДенисЧ? А как мне пойти дальше, вниз по каталогам? Объясни уж первокласснику
|
|||
6
Прапор Лящук
10.07.08
✎
10:17
|
Все, понял
|
|||
7
ДенисЧ
10.07.08
✎
10:18
|
(5) я ж грю. Испольлзуем ФС.АТрибутыФАйла, через него определяем, Что это каталог, сохраняем в список. После прохождения всего текущего каталога то же самое повторям для каждого каталога из списка.
Особенно нужно учесть каталоги с именами "." и "..". В них переходить не надо. |
|||
8
Heckfy
10.07.08
✎
10:29
|
(4) Ну, например, найти все мд файлы и загнать пути к ним в ТЗ. Да масса причин.
|
|||
9
YF
10.07.08
✎
10:35
|
(0) вот у меня такая процедурка очистки каталога работает ...
//------- © YF -------------------- // Очищает каталог от файлов, включая подкаталоги и, // возможно, удаляет сам каталог. // _каталог: - имя каталога БЕЗ СЛЭША В КОНЦЕ // _полностью: // 1 - удалить сам каталог, все файлы, все подкаталоги. // 2 - удалить все файлы, все файлы во всех подкаталогах, все подкаталоги // 3 - удалить все файлы, все файлы в подкаталогах Процедура глОчисткаКаталога(_каталог, _полностью = 3) Экспорт Если глСуществуетФайл(_каталог, 1) = 1 Тогда атрибуты_=""; // Запишем фсе найденные файлы в список списокФайлов = СоздатьОбъект("СписокЗначений"); ФС.УстТекКаталог(_каталог); файл_ = СокрЛП(ФС.НайтиПервыйФайл("*.*")); Пока файл_ <> "" Цикл Если (файл_=".") или (файл_="..") Тогда файл_=ФС.НайтиСледующийФайл(); Продолжить; КонецЕсли; //(файл_=".") или (файл_="..") списокФайлов.ДобавитьЗначение(файл_); файл_=ФС.НайтиСледующийФайл(); КонецЦикла; // Теперь пройдемся по списку Для ы=1 По списокФайлов.РазмерСписка() Цикл ФС.УстТекКаталог(_каталог); файл_ = списокФайлов.ПолучитьЗначение(ы); // Если файл - удалим, если каталог, то вызовем процедуру для него атрибуты_=""; ФС.АтрибутыФайла(файл_,"",атрибуты_); Если Сред(атрибуты_,4,1) <> "1" Тогда //Это именно файл Попытка ФС.УдалитьФайл(файл_); ЗаписьЖурналаРегистрации("Удаляем файл процедурой ""глОчисткаКаталога("+_каталог+", "+Строка(_полностью)+")""", "Файлы", "Удаление файла", глПользователь, 3); Исключение КонецПопытки; Иначе //Это каталог Если _полностью < 3 Тогда полностью_ = 1; Иначе полностью_ = 3; КонецЕсли; //_полностью < 3 глОчисткаКаталога(ФС.ТекКаталог()+"\"+файл_, полностью_); КонецЕсли; // Сред(атрибуты_,4,1) <> "1" КонецЦикла; ФС.УстТекКаталог(КаталогПользователя()); ФС.НайтиПервыйФайл("*.*"); Если _полностью = 1 Тогда //Удалим и сам каталог Попытка ФС.УдалитьКаталог(_каталог); ЗаписьЖурналаРегистрации("Удаляем файл процедурой ""глОчисткаКаталога("+_каталог+", "+Строка(_полностью)+")""", "Файлы", "Удаление каталога", глПользователь, 3); Исключение КонецПопытки; КонецЕсли; //_полностью = 1 КонецЕсли;//глСуществуетФайл(_каталог, 1)=1 КонецПроцедуры //глОчисткаКаталога + //------- © YF -------------------- // Функция проверяет существует ли каталог или файл <_путь> // В отличие от стандартного метода ФС, проверяет действительно ли // это файл или каталог. // Возвращает 1 или 0 // _путь - строка с путем к файлу/каталогу // _чтоИщем: 0 - файл, 1 - каталог, 2 - все равно что, лишь бы было Функция глСуществуетФайл(Знач _путь, Знач _чтоИщем = 0) Экспорт // Удалим слэш в конце, иначе криво отработает ФС.АтрибутыФайла() путь_ = СокрЛП(_путь); Если (Прав(путь_, 1) = "\") или (Прав(путь_, 1) = "/") Тогда путь_ = Лев(путь_, СтрДлина(путь_) - 1); КонецЕсли; //(Прав(путь_, 1) = "\") или (Прав(путь_, 1) = "/") // Теперь посмотрим наличие файла/каталога Если ФС.СуществуетФайл(путь_) = 0 Тогда возврат 0; ИначеЕсли _чтоИщем = 2 Тогда // Итак, мы уверены, что что-то есть, а раз не важно, // что именно, то и вернем единичку возврат 1; Иначе // Файл/каталог существует, теперь выясним, файл это или каталог атрибуты_=""; ФС.АтрибутыФайла(путь_,"",атрибуты_); файлЛи_ = глНе(Число(Сред(атрибуты_,4,1))); Возврат ((файлЛи_+_чтоИщем) % 2); КонецЕсли; //ФС.СуществуетФайл(_каталог) = 0 КонецФункции //глСуществуетКаталог |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |