#0
by Vladal
Понимаю, что пятница. конец рабочего дня. Перебираю папку с файлами методом ФС.НайтиПервыйФайл и ФС.НайтиСледующийФайл. Довольно удобная штука, т.к. рекурсивно заходит в подпапки и читает все файлы оттуда. Замер производительности ругается именно на процедуру поиска файлов. Думал выбрать все файлы и отсеивать только *.ert, но приросту никакого - 1С затрачиывает дополнительное время на сравнение условий. Как исключить эту конкретную подпапку, в которой более 20'000 файлов и там явно нет *.ert?
#4
by Vladal
Не пойдёт. Надо найти все обработки во всех подпапках рекурсивно. Но тут попадается та папка с ненужными мне файлами, ФС её читает и всё. Это особенность движка ФС или каким способом еще можно?
#6
by Vladal
Вроде как нашел способ. Теперь вместо сообщения надо файл в список совать. А как - тупонька не соображает: On Error Resume Next Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\.
ootCIMV2") If Err.Number <> 0 Then WScript.Echo Err.Number & ": " & Err.Description For Each objFile In colFiles Next WScript.Echo "Всего файлов: " & colFiles.Count
#8
by Vladal
Так и есть. Но ФС.НайтиСледующийФайл лопатит опять весь диск и в том числе ненужную папку. К WSH руки пока не дотянулись, но он сработал значительно быстрее.
#16
by Torquader
For Each f in d.Files ;перебираем файлы Next For Each p In d.SubFolders ;перебираем вложенные директории Next Что касается работы с директорией, где много файлов, то любая системная функция при пролистывании или выводит содержимое всей директории сразу или при каждом вызове делает перебор заново, чтобы выбрать следующий по номеру файл.
#17
by Vladal
Вот мне-то как раз и надо тут папку с многофайлами пропустить. Megj в неё не заходить. Я согласен в первый раз прочитать все подпапки, составить их список и потом заходить в них. Пример: КорневаяПапка + Подпапка1 + Подпапка3 + Подпапка4 --- вот эту надо пропускать + Подпапка5 Составили список файлов, потом в каждую кроме 4-й заходим и читаем список вложенных файлов.
#18
by Vladal
Я составляю список подпапок, пропуская Подпапку4, потом по списку иду и рекурсивно создаю список файлов именно этих подпапок. Таким образом будет читаться содержимое только "Правильные" подпапки, а нехоршка пропускается.
#19
by rs_trade
если возможно, именовать папки так, что бы понятно было где искать, а что пропускать.
#20
by Torquader
а что VbScript.RegExp не поможет отличить Подпапка4 от всех остальных. Другое дело, что в директории с внешними формами хранить ещё кучу всего явно нехорошо.
#21
by Cthulhu
КомандаСистемы - dir - скинуть в какой надо файл в каком надо формате и пропарсить...
#26
by Vladal
Атрибуты есть, я их читаю в первом проходе, когда собираю каталоги. Но беда, что ФС.НайтиСледующийФайл ищет всё. Так что самы быстрый вариант поперебору в парсинге dir
#28
by Vladal
Еще не рыл туда. Наверно, так. Спасибо. Сейчас приоритет задачи сменили, проверить пока не смогу, но на заметочку взял.
#29
by Vladal
Нашел еще один скрипт, который просматривает указанную папку и создаёт лог с именами файлов '*--------------------------------------------- '* Скрипт получения списка файлов '*--------------------------------------------- '* Programming by VerSys, 2008 '********************************************** Option Explicit ' 'Переменные и константы Public strPath 'Патч текущих диска, папки, подпапки Public strSeparator 'Строка-разделитель списка Public strSpace 'Строка с заданным количеством пробелов Public strBuffer 'Строка-накопитель сведений о папках, файлах Dim strFileName 'Имя файла отчета Const strHead = "Выберите диск или папку:" ' '-------------------------------------------------------------- 'Формируем диалоговое окно "Обзор папок" Set objShell = CreateObject("Shell.Application") 'Объект Shell Set objDialogFolder = objShell.Namespace(&H11&) 'Name_Space = "Мой компьютер", Set objDialogFolderItem = objDialogFolder.Self 'и устанавливаем по умолчанию в диал.окне strPath = objDialogFolderItem.Path ' 'Выводим диалоговое окно "Обзор папок" Set objFolder = objShell.BrowseForFolder(0,strHead,0,strPath) ' 'Если ничего не выбрано - завершаем скрипт If objFolder Is Nothing Then End If ' 'Если пользователь выбрал диск или папку: ''получаем патч из диалога ' ''создаем File System Object Set objFSO = CreateObject("Scripting.FileSystemObject") ' ''проверяем доступность указанного ресурса If objFSO.FolderExists(strPath) = False Then ' ''вызываем функцию прохода по каталогам и файлам dhGetListFolderFile(strPath) ' ''Создаем файл отчета '''Формируем имя файла отчета как строка патча с заменой недопустимых символов strFileName = strFileName & ".txt" '''Результат пишем в файл ' 'Сообщаем о создании отчета ' '-------------------------------------------------------------- ' FUNCTION'S Function dhGetListFolderFile(strFolderName) 'Функция прохода по каталогам и файлам Dim dFolder, dFile, dSubFolder 'получаем патч каталога Set dFolder = objFSO.GetFolder(strFolderName) 'проходим файлы текущего каталога strBuffer = strBuffer & strFolderName & " <DIR>" & vbNewLine For Each dFile In dFolder.Files strBuffer = strBuffer & strSeparator & vbNewLine 'проходим рекурсивно по всем подкаталогам For Each dSubFolder In dFolder.SubFolders dhGetListFolderFile(dSubFolder.Path) Next End Function
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- v7: v7 : НДС при возврате
- v7: Что нужно чтоб подключить ККМ Меркурий 112F к 1с V7 Торговля + склад
- v7: v7.7 премещение элемента справочника
- v7: v8: v7: Кто-нибудь сумел скачать комплект отчетности за I квартал 2007 года
- ФС.НайтиСледующийФайл() не понял с маской
- v7: 1С V7.7 в сети
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- v7: Перенос данных Бухгалтерия из v7 в v8
- v7: v7 Перехват глобального события ПриЗаписи() или ОбработкаПроведения()
В этой группе 1С
- Очень нужны правила конвертации при обмене с типовой БП из УТ 10.3.14.5!
- Возможно ли одним запросом выбрать элемент и его родителя верхнего уровня?
- Проверка на корректный ввод данных в УПП
- v8: ЗУП 8.2 персонифицированный учет не можем сделать
- УПП регламентированные отчеты представитель
- Обособленное подразделение в Бух 2,0 как?
- премии в ЗУП после переноса из ЗиК
- БГУ закрытие балансовых счетов в конце года
- УТ 11 Нюансы интеркампани
- ошибка при установке HASP License Manager
- 1с 77 Бухгалтерия типовая учет нескольких касс
- ТУпой вопрос: как получить текст запроса динамического списка?
- Свой обмен в БСП с другой не типовой конфигурацией.
- Зачем нужен пустой конструктор по-умолчанию C++?
- Корректировка реализации не делает движений
- УПП Создание планов производства по подразделениям
- Вопрос по расчету себестоимости в 1С КА или УПП
- УПП - объекты доступа документов
- В модулях: ТолстыйКлиентОбычноеПриложение на Клиент
- Ошибка разбора XML при печати РТУ, УПП 1.3.22.1 (после обновления)