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+ знаков:
Ошибка при вызове метода контекста (ЭтоФайл)
Если ЭлементМассива.ЭтоФайл() Тогда
по причине:
Ошибка доступа к файлу: <имяфайла>
|
|