Имя: Пароль:
1C
1С v8
Подсчет количества файлов в папке и всех вложенных
0 Arxangel06
 
15.12.14
14:40
Доброго времени суток.
Есть задача - посчитать полное количество файлов и их общий объем. Все-все файлы из всех вложенных директорий. НайтиФайлы() не работает, т.к. длина путей запредельная, сильно больше 1000 знаков (и как винда это переваривает???) FileSystemObject почему-то показывает значения, отличные от тех, что видны в свойствах папки. например в свойствах я вижу 103 026 995 736 байт (почти 96 гигабайт), 72 241 файл и 7971 директорию. При этом FSO выдает, что там 102 969 436 154 байт, 72 153 файла и 7971 директория. Вопрос - это FSO потерял 88 файлов на 56 Мб, или Explorer свойства папки неправильно считает? Или это у меня кривой код? Код:
Функция ПолучитьТаблицуФайловВДиректории(Путь) Экспорт
    
    FSO = Новый COMОбъект("Scripting.FileSystemObject");
    Folder = FSO.GetFolder(Путь);
    ОбработатьПодДиректорию(Folder);
    ТаблицаФайлов.Сортировать("Дата Убыв");
    
    Возврат ТаблицаФайлов;
    
КонецФункции

Процедура ОбработатьПодДиректорию(ПутьКПодДиректории)
    
    FSO = Новый COMОбъект("Scripting.FileSystemObject");
    Folder = FSO.GetFolder(ПутьКПодДиректории);
    Для Каждого Файл ИЗ Folder.Files Цикл
        НоваяСтрока = ТаблицаФайлов.Добавить();
        НоваяСтрока.Путь = Файл.ParentFolder.Path;
        НоваяСтрока.Имя = Файл.Name;
        НоваяСтрока.Объем = Файл.Size;
        НоваяСтрока.Дата = Файл.DateLastModified;        
    КонецЦикла;
        
    Для Каждого SubFolder из Folder.SubFolders Цикл
        ОбработатьПодДиректорию(SubFolder);
    КонецЦикла;
    
    
КонецПроцедуры
1 Arxangel06
 
15.12.14
15:09
Дополнение. НайтиФайлы() Возвращает правильное количество файлов, но посчитать размер не удается, при обращении к файлу, у которого полный путь 500+ знаков:
Ошибка при вызове метода контекста (ЭтоФайл)
Если ЭлементМассива.ЭтоФайл() Тогда
по причине:
Ошибка доступа к файлу: <имяфайла>
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.