Имя: Пароль:
1C
1С v8
Как определить "Размер файла на диске", а не просто "Размер файла"?
0 СЕсин
 
16.08.16
17:13
Всем привет! Если зайти в свойства файла, там есть поле "Размер", а есть "Размер на диске". Стандартная функция 1С "Файл.Размер()" возвращает как раз первое свойство. А мне очень нужно определить именно "Размер на диске".
Пробовал через эту штуку с тем же результатом:
FSO = Новый COMОбъект("Scripting.FileSystemObject");

Подскажите пожалуйста, возможно ли решить данную задачу? И если возможно, то как?

На законный вопрос "а нафига?", поясню: Мне нужно определить, докачался ли файл? Файл качает сторонняя программа GetMedia.
Я периодически хочу проверять размер файла, чтобы понять, докачался или нет. Но стандартной функцией он возвращает именно "Размер", а не "Размер на диске". И все время пока идет закачка, "Размер" равен, то 0, то какому-то произвольному значению. И это значение может по 5 минут висеть одно и то же, если файл большой. А вот если отслеживать "Размер на диске", то это значение плавно растет.
Подойдет также какой-нибудь альтернативный способ определения, скачался файл или нет. Более красивых вариантов, к сожалению, я не придумал.
1 СЕсин
 
16.08.16
17:17
Да, также я пробовал отслеживать таким образом:
FSO = Новый COMОбъект("Scripting.FileSystemObject");                
File = FSO.GetFile(ТекИмяФайла.Имя);
ДатаИзменения = File.DateLastModified;  

Но эта дата тоже нестабильно работает. То постоянно меняется, то висит на одном значении до окончания загрузки. И как бы определить, последний раз она поменялась или нет, х.з. как.
2 hitodom
 
16.08.16
17:18
качать качалкой, что отдает процент скачивания
3 СЕсин
 
16.08.16
17:20
(2) например какой? Ну и тут ещё какая фигня. Как можно догадаться, я пытаюсь автоматизировать скачивание торрентов. GetMedia я выбрал, т.к. там есть нормальный встроенный поиск. И у меня в принципе все получилось, скачивает то что нужно, но понять, докачался файл или нет, я не могу.
4 Fragster
 
гуру
16.08.16
17:28
wget или curl
5 Aleksey
 
16.08.16
17:30
(0) Не всегда плавно растет. Качалка вполне может и сразу разметит место на диске под файл
6 Jump
 
16.08.16
17:35
(0)Размер файла - сколько байт содержит файл.
Размер на диске - сколько места на диске занимает файл.
Эти размеры никак не связаны.

>>Я периодически хочу проверять размер файла, чтобы понять, докачался или нет
Для этих целей вам нужен размер файла.
А не размер файла на диске.

Допустим один и тот же видеофильм  может занимать на диске 20гб, или 0мб.
Или текстовый документ размером 20байт может занимать на диске 8мб.
7 Jump
 
16.08.16
17:37
Т.е вам нужен именно размер файла для этих целей, а размер занимаемый файлом на диске для этих целей бесполезен абсолютно.
8 Кирпич
 
16.08.16
17:38
А если попробовать переместить файл? Может, если качается, не даст переместить, а если скачался, то даст?
9 Jump
 
16.08.16
17:40
(3) wget, aria2
10 Jump
 
16.08.16
17:46
(3) Если вам нужно проверить что файл докачался - лучше всего сравнить хэш.
Это надежно и гарантированно.
В крайнем случае можно проверить размер, это менее надежно. Разумеется перед тем как проверять размер нужно остановить работу с файлом.
Пока он открыт на запись трудно получить его реальный размер.

Я бы постоветовал вам пользоваться готовыми утилитами для скачивания, которые сами все делают - например сказали скачать, после скачивания переместить, или выполнить команду.
И все.
11 СЕсин
 
16.08.16
17:49
(6) я действовал эмпирическим путем - во время закачки заходил в свойства и смотрел, какая цифра меняется, а какая стоит на месте. Поэтому и привязался к этому "размеру на диске".
Вы пишите "Для этих целей вам нужен размер файла." - так он один и тот же всю дорогу. Возможно, я не совсем уловил мысль.
wget, aria2 - они могут качать торрент. А найти торрент по заданным параметрам и имени могут? Я понял, что не могут. Поправьте меня пожалуйста, если я ошибаюсь.
Если с помощью wget, aria2 можно именно найти, что требуется, конечно, буду копать в этом направлении.
Переместить не дает, программа его держит, пока он в списке загрузки находится.
Короче, я бы и раз воспользоваться чем-то более элегантным, но как там дела обстоят с поиском торрентов?
12 СЕсин
 
16.08.16
17:50
*рад воспользоваться )
13 hitodom
 
16.08.16
17:56
(11)ищи одной софтиной, качай другими
14 Dragner
 
16.08.16
17:59
https://technet.microsoft.com/ru-ru/magazine/hh148159.aspx
Это теория про Размер и Размер На Диске, но там есть упоминание про Get­Compressed­File­Size может наведёт на мысль.
15 Jump
 
16.08.16
18:03
wget - только фтп и хттп.
aria2 в основном торренты, но может также и фтп и хттп, причем одновременно с торрентом.
>>А найти торрент по заданным параметрам и имени могут?
Это как? Не слышал о таком.
Торренты ищутся не по заданым параметрам, а по торрентфайлу, или металинку.

А размер на диске ничего общего с реальным размером файла не имеет.
16 СЕсин
 
16.08.16
18:10
(15) "А найти торрент по заданным параметрам" - я сделал небольшой макрос, который вбивает в GetMedia название фильма и ставит его на скачивание. Таким образом можно программно скачать какой-то фильм, Торрентфайла которого у нас пока нет. Просто по названию. Способ, конечно, корявый, но он работает. Для полного счастья мне нужно отследить завершение скачивания )
17 Jump
 
16.08.16
18:16
(16) Ну а как вы можете отследить окончания скачивания если не знаете что качаете?
18 СЕсин
 
16.08.16
18:20
(17) Я знаю куда качаю. Выполняю макрос, указав название фильма. Когда вижу что в папке, куда идет закачка, появляется файл, пытаюсь отследить когда его размер перестанет расти. После окончания собираюсь перемещать фильм в другую папку, чтобы очистить место для новой закачки.

Да тут, нет никакой защиты. Одновременно качается только один файл. Меня это устраивает.
19 Jump
 
16.08.16
19:07
(18) Ну вы не знаете размер файла.
Как вы можете отследить что он скачался?
А то что перестал расти - интернет пропал, или пиры отвалились.
20 Fragster
 
гуру
16.08.16
23:52
(18) если качаются торренты - используйте transmission, который сделает всё сам, причем из консоли
21 Jump
 
17.08.16
09:33
(20) Поиск фильмов по названию?
22 DES
 
17.08.16
09:45
(0) dir file.ext > f.txt
Затем парсинг файла f.txt
23 trdm
 
17.08.16
10:22
Попробовать переименовать файл. Если файл переименовывается, значит докачан и "отпущен".
24 Serginio1
 
17.08.16
10:25
Используй асинхронные методы. А вот откуда сам решай.
25 Fragster
 
гуру
17.08.16
11:53
(21) поиск фильмов по названию можно другими методами сделать, вплоть до 1сных httpзапросов к трекерам (ну, или тем же wgetом)
26 Jump
 
17.08.16
12:28
(25) Я в курсе.
Автор хочет чтобы качалка проверяла.
А вообще я для торрентов трансмишн не использую.

Если с ГУИ - то юторрент.
Если консольный - aria2
27 Fragster
 
гуру
17.08.16
13:08
(26) у меня оно вообще на роутере... кидаю файл в шару, он пропадает, через некоторое время в шаре появляется результат (уже полностью скачанный)
28 Fragster
 
гуру
17.08.16
13:09
занимается этим трансмишн как раз. по такой схеме автору остается только чем-то положить файл в папку и мониторить эту папку на появление результата
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший