[Цитировать]

    dimo70
  • 17296
  • Стаж: 6 лет 4 месяца
  • Сообщений: 3990
  • Репутация:26

    [+] [-]
  • Откуда: BG
wadimus, спасибо за наводку. Пригодиться. А етот асоциатор как портативка может работать?
Ну в общем так, может и велосипед, за то по моему сделан будет. ab

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    wadimus
  • 14910
  • Стаж: 7 лет 5 месяцев
  • Сообщений: 762
  • Репутация:91

    [+] [-]
dimo70, да

[Цитировать]

    dimo70
  • 17296
  • Стаж: 6 лет 4 месяца
  • Сообщений: 3990
  • Репутация:26

    [+] [-]
  • Откуда: BG
Обновлен. Подключил асоциатора, исправил ошибки.

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    wadimus
  • 14910
  • Стаж: 7 лет 5 месяцев
  • Сообщений: 762
  • Репутация:91

    [+] [-]
dimo70, друг, поглядел твои батники по скачиванию файлов ..
ИМХО, туповато ae
пример с Aida64.cmd:
- если файла нет - его скачиваем.
- файл скачали - запускаем
во первых - ты поменял файл на своем облаке (FTP) - закачал туда новую версию. но файл у меня уже есть - значит я новую версию не получу!
во вторых, закачал и запустил - ладно, файл маленький (12Мб), а если пошло скачивание большого файла (размером под пару сотен Мб)?
а мне надоело ждать и я прервал скачивание или тернет кончился или файл пропал (ты в это время удалил старый файл и начинаешь аплодить новую версию этого файла) - мало ли чё случилось.
и т.к. скачивание идет в конечный файл, то он останется недокачанный, и начнет запускаться.
у тебя нету защиты от дурака.
решение первой проблемы - проверь размер файла (находящегося в тернете) и проверь размер файла, находящегося на диске.
размеры одинаковы - качать ничего не надо!
размеры разные - надо качать!
решение второй проблемы - качай не в конечный файл, а в промежуточный! далее проверяй размеры промежуточного файла с размером этого же файла в тернете.
эти размеры совпадают - значит файл скачался полностью
далее удаляем конечный файл (когда-то уже скачанный) и переименовываем промежуточный (а он более новый, ибо мы его скачиваем!) в конечный.
набросаю батник попоззже af
ЗЫ. млин .. определить размер файла в тернете, используя только wget - нетривиальная задача ah

[Цитировать]

    korsak7
  • 107
  • Стаж: 9 лет 4 месяца
  • Сообщений: 1082
  • Репутация:62

    [+] [-]
у тебя нету защиты от дурака.
не поднять ему такой батник , обсуждали уже
ЗЫ. млин .. определить размер файла в тернете, используя только wget - нетривиальная задача ah
а зачем себя так ограничивать ? используй netsize.exe

[Цитировать]

    wadimus
  • 14910
  • Стаж: 7 лет 5 месяцев
  • Сообщений: 762
  • Репутация:91

    [+] [-]
86579а зачем себя так ограничивать ? используй netsize.exe
- мы не ищем простых путей! создадим трудности и потом героически их преодолеем!
- с помощью одной отвертки и какой-то матери собрал-разобрал самолёт ..
ЗЫ. сравнил скорости скачивания простым wget-ом и много-потоковым axel.exe
из облака взял файл ACDSee_Setup.exe - он весит 124Мб
скачиваю в 8 потоков axel.exe: Downloaded 124.2 Megabyte in 40 seconds. (3109.07 KB/s)
скачиваю тот же файл wget.exe: 124,15M 760KB/s in 3m 17s
40 сек против 200 сек!
Батник:
@echo off
:: переменные
:: a1 - скачиваемый файл
:: b1 - откуда качаем этот файл
set "a1=Aida64.exe"
set "b1=https://getspace.cloud/cloud/s/fNzjyzaoNCfJABo/download?path=/&files=%a1%"
:: размер файла %a1% в тернете
set "nsize=0"
:: размер файла %a1% на диске (уже когда-то скачанного)
set "fsize=0"
:: размер промежуточного файла
set "size=0"
:: переменные занулены заранее
:: --spider - проверяем скачиваемый файл на доступность
:: два потока:
:: 1-ый поток - это stdout
:: 2-ой поток - stderr.
:: 2^>^&1 - отправляем 2-ой поток туда же, куда и 1-ый
:: через пайп - ^| ищем в 1-ом потоке строку, в которой есть слово Length: (find "Length:")
:: tokens=2 - в этой строке берем 2-ое слово - это размер файла в байтах - заносим этот размер в переменную nsize
:: сама строка для Aida64.exe будет такая: Length: 12433301 (12M) [application/x-ms-dos-executable]
for /f "tokens=2" %%i in ('wget -N --no-check-certificate --spider "%b1%" 2^>^&1 ^|find "Length:"') do set "nsize=%%i"
:: если тернета нет или файл %a1% недоступен, то переменная nsize (размер файла) равна 0 - на выход
if %nsize%==0 goto 1
:: если скачиваемый файл %a1% уже есть, то находим его размер (%%~zi) - и этот размер присваиваем переменной fsize
:: если скачиваемого файла %a1% еще нет, то переменная fsize равна 0
if exist "%a1%" ( for %%i in ("%a1%") do set "fsize=%%~zi" )
:: сравниваем переменные fsize и nsize
:: они одинаковы (EQU) - значит существующий файл имеет одинаковый размер с файлом в тернете - и качать этот файл заново не надо
if %fsize% EQU %nsize% goto 1
:: качаем файл с защитой от дурака:
:: не сразу в файл %a1% а в промежуточный файл %a1.~%
:: т.е не Aida64.exe а Aida64.exe.~
wget -t 3 --no-check-certificate "%b1%" -O "%a1%.~"
:: что-то скачалось (появился файл %a1%.~ т.е Aida64.exe.~)
:: проверяем размер этого файла и заносим результат в переменную size
for %%i in ("%a1%.~") do set "size=%%~zi"
:: если размеры size и nsize не совпадают (NEQ) - на выход - файл не докачался полностью
if %size% NEQ %nsize% goto 1
:: размеры совпадают - значит промежуточный файл скачался полностью!
:: наш старый файл %a1% (Aida64.exe) удаляем
:: и переименовываем промежуточный файл %a1%.~ в %a1%
:: т.е. Aida64.exe.~ переименовываем в Aida64.exe
del "%a1%" /q
ren "%a1%.~" "%a1%"
:1
:: удаляем мусор - промежуточный файл - его, возможно нет, когда он полностью скачался
:: если же он скачался не полностью - то он останется - а он не нужен больше
del "%a1%.~" /q
exit
ЗЫ. чуйствую, где-то накосячил ah

[Цитировать]

    dimo70
  • 17296
  • Стаж: 6 лет 4 месяца
  • Сообщений: 3990
  • Репутация:26

    [+] [-]
  • Откуда: BG
wadimus, спасибо за помощь и за "подробный" батник. aa
Проверю в деле, если работает подключу. Если проблеммы нарисуются напишу, чтоб исправили и дополнили.
Насколько помню, что то такое было и у BIOS в его сборке. Лично я не любитель сложностей, но если к лучшему сделаю.
ЗЯ Батник работает если екзешника нет и качает его. Если на сервер загрузить другой файл уже не работает. Окно батника просто закрывается через время.
Кажеться korsak7 правильно предлагает использовать стороннюю утилиту netsize

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    korsak7
  • 107
  • Стаж: 9 лет 4 месяца
  • Сообщений: 1082
  • Репутация:62

    [+] [-]
wadimus, а aria2c.exe уже не моден ?

[Цитировать]

    wadimus
  • 14910
  • Стаж: 7 лет 5 месяцев
  • Сообщений: 762
  • Репутация:91

    [+] [-]
dimo70, проверяй
еще .. пожелания ..
утилиты для качания, тот же wget, перемести в какую-нибудь папку .. к примеру Utils - чтобы они не были в общей куче программ.
axel.exe - много-потоковый качатель - тоже перемести к качателям (кроме самого файла axel.exe у него есть несколько dll-файлов)
https://sourceforge.net/projects/unix-utils/files/axel/2.16.1/
строка для качания файлов такая:
axel.exe "%b1%" -k -a -n 8 -o "%a1%.~"
проверь на скачивание больших файлов с axel.exe - удивишься скорость, по сравнению с wget.exe
ключи:
-n 8 - число потоков качания
-k - аналог у wget: --no-check-certificate
-o <файл> - аналог у wget: -O <файл>
-a - прогресс-индикатор точками .
обязательно принудительно делай рабочим каталогом тот, откуда запускаешь батник! (вторая строка твоих батников)
@echo off
CD /d "%~dp0"
иначе, рабочим каталогом сделается тот, где есть cmd.exe
C:\Windows\System32\

Добавлено через 4 минуты 18 секунд:
korsak7, друг .. привык я уже к axel-у .. да и люблю смотреть на скачивание полоской :)
aria2c.exe - тоже очень могучая качалка, но! у меня есть молоток и зубило, зачем мне еще и отбойный молоток? :)
тем более с axel-ем я уже не одну собаку сьел .. а в арии я не певец af
Добавлено через 14 минут 53 секунды:
86581Кажеться korsak7 правильно предлагает использовать стороннюю утилиту netsize
утилиту netsize.exe перемести к качателям
строку в батнике:
for /f "tokens=2" %%i in ('wget -N --no-check-certificate --spider "%b1%" 2^>^&1 ^|find "Length:"') do set "nsize=%%i"
меняем на:
for /f "tokens=1" %%i in ('netsize.exe "%b1%"') do set "nsize=%%i"
не забываем у путях!
.. Utils\netsize.exe
..
.. Utils\axel.exe

[Цитировать]

    korsak7
  • 107
  • Стаж: 9 лет 4 месяца
  • Сообщений: 1082
  • Репутация:62

    [+] [-]
привык я уже к axel-у .. да и люблю смотреть на скачивание полоской :)
можно поподробнее о параметрах отображения ?
сейчас axel выводит каждый скачанный блок в отдельную строку - бесполезная каша на экране.
как сделать в одну полоску ?
кстати под XP работает ?

[Цитировать]

    wadimus
  • 14910
  • Стаж: 7 лет 5 месяцев
  • Сообщений: 762
  • Репутация:91

    [+] [-]
korsak7, хм ..
последний axel.exe собрат летом 18-года .. ХР еще ценилось тогда .. хотя, не уверен ah
версия 2.16 одну полоску не делает, вот версия 2.4 могла делать одну полоску, но у неё нет ключа -k, скачать файл с того же гитхаба старая версия не может.
ты, если можешь, расскажи и покажи ключи для арии .. используя мой пример батника .. многопоточность, без проверки сертификата, скачать в определенный файл.
ЗЫ. нагрузим болгарина dimo70 информацией .. он славянин, он поймет az

[Цитировать]

    korsak7
  • 107
  • Стаж: 9 лет 4 месяца
  • Сообщений: 1082
  • Репутация:62

    [+] [-]
ну нафиг тогда этот раритет
ты, если можешь, расскажи и покажи ключи для арии .. используя мой пример батника .. многопоточность, без проверки сертификата, скачать в определенный файл.
я не парюсь с многопоточностью и мегатонкими настройками ))
aria2c.exe "%_url%" --check-certificate=false --console-log-level=error --allow-overwrite=true -x3 -s3 --dir=%_maindir% -o %_file%

[Цитировать]

    wadimus
  • 14910
  • Стаж: 7 лет 5 месяцев
  • Сообщений: 762
  • Репутация:91

    [+] [-]
86589я не парюсь с многопоточностью и мегатонкими настройками ))
ну, не скажи ..
допустим, у меня в сборке около сотни авто-обновляемых ячеек, или я без много-поточности обновляю сборку за пару часов, а с фишками акселя за пол-часа - тут начнешь париться :)

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 2 месяца
  • Сообщений: 3612
  • Репутация:127

    [+] [-]
86589-x3 -s3
Вот это и есть многопоточность: качать в три потока. Я обычно сразу втуливаю 8, гы.
Рекомендую для пущей красивости:
--summary-interval=0

[Цитировать]

    korsak7
  • 107
  • Стаж: 9 лет 4 месяца
  • Сообщений: 1082
  • Репутация:62

    [+] [-]
допустим, у меня в сборке около сотни авто-обновляемых ячеек, или я без много-поточности обновляю сборку за пару часов, а с фишками акселя за пол-часа - тут начнешь париться :)
У меня другой подход к обновлению ячеек (говоря твоим языком) - поэтому мне это неважно. У меня выборочный подход и нет тотального обновления.
Если я нативный установщик не переделываю - то зачем мне его качать и хранить? Вот тот же firefox. В этом случае при установке он качается напрямую с инета.
А перепиленные установщики скармливаю в папку ЯД-агенту.
Соответственно у меня 2 хранилища - на ЯД и копия на флешке. И прога при установке выбирает откуда качать "ячейку"
Добавлено через 9 минут 41 секунда:
Рекомендую для пущей красивости:
--summary-interval=0
Задать интервал в секундах до вывода сообщения о прогрессе загрузки. Установка 0 запрещает вывод. По умолчанию: 60
задал. разницы не заметил, прогресс есть. в чём красявость ?

Страница 23 из 94


Показать сообщения:    

Текущее время: 28-Апр 12:08

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы