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 > Не путай ПустоеЗначение() с "Я не этого хотел". | |
| Интернет-форум Краснодарского края и Краснодара |