К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Обработка папки с файлами

Гость
0 - 11.12.2013 - 13:10
Если папка с подпапками и файлами в них. Причем в каждой папке есть файл с одним и тем же именем.

Нужно обработать все такие файлы, т.к. важно содержимое каждого из них.


ФС.УстТекКаталог(Путь); // Путь это корневой каталог с подкаталогами

ПапкаФайлов = ФС.НайтиПервыйФайл("*.*");

Вот далее не срабатывает. Потому что ПапкаФайлов равна ".", т.е. выбираются не подкаталоги а корневой каталог). Т.е ничего не работает...

Пока ПустоеЗначение(ПапкаФайлов)=0 Цикл

ОбработкаКаталога(ПапкаФайлов);

ПапкаФайлов = ФС.НайтиСледующийФайл();

КонецЦикла;

как указать в процедуре, наличие подкаталогов?



Гость
1 - 11.12.2013 - 13:34
Открой для себя WSH...
Можно еще почитать ЖКК. Там русским по белому упоминается, что "[em]если задана маска "*.*" для некорневого каталога, первым возвращаемым значением будет "."..... Имя следующего файла будет ".." ....[/em]"
2 - 11.12.2013 - 13:46
В цикле проверить если имяфайла="." или ".." - уйти на выбор следующего файла.
.
по полученному имени файла - используя атрибуты файла - проверить это файл или каталог - если каталог - уходить в рекурсию обработки этого каталога (или как надо иначе)
.
АтрибутыФайла(<?>,,,,,,);
Синтаксис:
АтрибутыФайла(<ИмяФайла>,<РазмерФайла>,<АтрибутыФайла>,<ВремяСоздания>,<ВремяПоследнегоДоступа>,<ВремяПоследнейЗаписи>,<РасширенноеИмяФайла>)
Назначение:
Возвращает атрибуты файла (в параметрах).
Параметры:
<ИмяФайла> - строка с именем файла;
<РазмерФайла> - переменная, принимающая размер файла в байтах;
<АтрибутыФайла> - переменная, принимающая атрибуты файла;
Возвращаемое строковое значение длиной 9 символов, в котором закодированы атрибуты файла. Символы могут принимать значения ''0'' или ''1'':
первый символ: если ''1'' - файл только для чтения;
второй символ: если ''1'' - скрытый файл;
третий символ: если ''1'' - системный файл;
четвертый символ: если ''1'' - каталог;
пятый символ: если ''1'' - архивный файл;
шестой символ: если ''1'' - обычный файл (все другие атрибуты не установлены);
седьмой символ: если ''1'' - временный файл;
восьмой символ: если ''1'' - файл, сжатый каким-либо архиватором;
девятый символ: если ''1'' - нет доступа к файлу.
<ВремяСоздания> - переменная, принимающая строку с датой и временем создания файла;
<ВремяПоследнегоДоступа> - переменная, принимающая строку с датой и временем последнего доступа к файлу;
<ВремяПоследнейЗаписи> - переменная, принимающая строку с датой и временем последней записи файла;
<РасширенноеИмяФайла> - переменная, принимающая строку с полным именем файла.

Подробнее см. в книгу ''1С:Предприятие 7.7. Описание встроенного языка. Часть 2'', глава 37 ''Работа с Файлами''.
3 - 11.12.2013 - 13:47
относительно надысь писал в выгрузку каталога с подкаталогами и файлами в дропбокс. как раз рекурсивно. работает. Чел приезжает к заказчику - тыкает в планшет и говорит "хочу вот это".. ;-)
4 - 11.12.2013 - 13:53
...
Атриб="";
ИмяФайла=ФС.НайтиПервыйФайл("*");
Пока ПустоеЗначение(ИмяФайла)=0 Цикл
Если Лев(ИмяФайла,1)="." Тогда ИмяФайла=ФС.НайтиСледующийФайл();Продолжить;КонецЕсли;
ФС.АтрибутыФайла(ИмяФайла,,Атриб);
Если Сред(Атриб,4,1)="1" Тогда
// кталог
Иначе
// файл
КонецЕсли;
ИмяФайла=ФС1.НайтиСледующийФайл();
КонецЦикла;
Гость
5 - 11.12.2013 - 14:18
4. В Пока ПустоеЗначение(ИмяФайла)=0 Цикл - не попадает.
т.к. ПустоеЗначение(ИмяФайла)=1
ИмяФайла=ФС.НайтиПервыйФайл("*") // ИмяФайла = "."
6 - 11.12.2013 - 14:24
(5)
???
ПустоеЗначение(".") = 0
Гость
7 - 11.12.2013 - 15:40
5-Pusto > Не путай ПустоеЗначение() с "Я не этого хотел".


К списку вопросов






Copyright ©, Все права защищены