dimo70
 - Стаж: 7 лет 4 месяца
- Сообщений: 3796
- Репутация:27[+] [-]
- Откуда: BG
|
wadimus, спасибо за наводку. Пригодиться. А етот асоциатор как портативка может работать? Ну в общем так, может и велосипед, за то по моему сделан будет.
_________________ Подпись отключена за нарушение правил форума
|
wadimus
  - Стаж: 8 лет 5 месяцев
- Сообщений: 749
- Репутация:91[+] [-]
|
|
dimo70
 - Стаж: 7 лет 4 месяца
- Сообщений: 3796
- Репутация:27[+] [-]
- Откуда: BG
|
Обновлен. Подключил асоциатора, исправил ошибки.
_________________ Подпись отключена за нарушение правил форума
|
 Отправлено: 20-Июн-2021 01:24
(спустя 2 часа 36 минут)
wadimus
  - Стаж: 8 лет 5 месяцев
- Сообщений: 749
- Репутация:91[+] [-]
|
dimo70, друг, поглядел твои батники по скачиванию файлов .. ИМХО, туповато  пример с Aida64.cmd: - если файла нет - его скачиваем. - файл скачали - запускаем во первых - ты поменял файл на своем облаке (FTP) - закачал туда новую версию. но файл у меня уже есть - значит я новую версию не получу! во вторых, закачал и запустил - ладно, файл маленький (12Мб), а если пошло скачивание большого файла (размером под пару сотен Мб)? а мне надоело ждать и я прервал скачивание или тернет кончился или файл пропал (ты в это время удалил старый файл и начинаешь аплодить новую версию этого файла) - мало ли чё случилось. и т.к. скачивание идет в конечный файл, то он останется недокачанный, и начнет запускаться. у тебя нету защиты от дурака. решение первой проблемы - проверь размер файла (находящегося в тернете) и проверь размер файла, находящегося на диске. размеры одинаковы - качать ничего не надо! размеры разные - надо качать! решение второй проблемы - качай не в конечный файл, а в промежуточный! далее проверяй размеры промежуточного файла с размером этого же файла в тернете. эти размеры совпадают - значит файл скачался полностью далее удаляем конечный файл (когда-то уже скачанный) и переименовываем промежуточный (а он более новый, ибо мы его скачиваем!) в конечный. набросаю батник попоззже  ЗЫ. млин .. определить размер файла в тернете, используя только wget - нетривиальная задача
|
korsak7
  - Стаж: 10 лет
- Сообщений: 1063
- Репутация:62[+] [-]
|
у тебя нету защиты от дурака. не поднять ему такой батник , обсуждали ужеЗЫ. млин .. определить размер файла в тернете, используя только wget - нетривиальная задача  а зачем себя так ограничивать ? используй netsize.exe
|
wadimus
  - Стаж: 8 лет 5 месяцев
- Сообщений: 749
- Репутация: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 ЗЫ. чуйствую, где-то накосячил
|
dimo70
 - Стаж: 7 лет 4 месяца
- Сообщений: 3796
- Репутация:27[+] [-]
- Откуда: BG
|
wadimus, спасибо за помощь и за "подробный" батник.  Проверю в деле, если работает подключу. Если проблеммы нарисуются напишу, чтоб исправили и дополнили. Насколько помню, что то такое было и у BIOS в его сборке. Лично я не любитель сложностей, но если к лучшему сделаю. ЗЯ Батник работает если екзешника нет и качает его. Если на сервер загрузить другой файл уже не работает. Окно батника просто закрывается через время. Кажеться korsak7 правильно предлагает использовать стороннюю утилиту netsize
_________________ Подпись отключена за нарушение правил форума
|
korsak7
  - Стаж: 10 лет
- Сообщений: 1063
- Репутация:62[+] [-]
|
wadimus, а aria2c.exe уже не моден ?
|
wadimus
  - Стаж: 8 лет 5 месяцев
- Сообщений: 749
- Репутация: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 - прогресс-индикатор точками . обязательно принудительно делай рабочим каталогом тот, откуда запускаешь батник! (вторая строка твоих батников)иначе, рабочим каталогом сделается тот, где есть cmd.exe Добавлено через 4 минуты 18 секунд: korsak7, друг .. привык я уже к axel-у .. да и люблю смотреть на скачивание полоской :) aria2c.exe - тоже очень могучая качалка, но! у меня есть молоток и зубило, зачем мне еще и отбойный молоток? :) тем более с axel-ем я уже не одну собаку сьел .. а в арии я не певец  Добавлено через 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
  - Стаж: 10 лет
- Сообщений: 1063
- Репутация:62[+] [-]
|
привык я уже к axel-у .. да и люблю смотреть на скачивание полоской :) можно поподробнее о параметрах отображения ? сейчас axel выводит каждый скачанный блок в отдельную строку - бесполезная каша на экране. как сделать в одну полоску ? кстати под XP работает ?
|
wadimus
  - Стаж: 8 лет 5 месяцев
- Сообщений: 749
- Репутация:91[+] [-]
|
korsak7, хм .. последний axel.exe собрат летом 18-года .. ХР еще ценилось тогда .. хотя, не уверен  версия 2.16 одну полоску не делает, вот версия 2.4 могла делать одну полоску, но у неё нет ключа -k, скачать файл с того же гитхаба старая версия не может. ты, если можешь, расскажи и покажи ключи для арии .. используя мой пример батника .. многопоточность, без проверки сертификата, скачать в определенный файл. ЗЫ. нагрузим болгарина dimo70 информацией .. он славянин, он поймет
|
korsak7
  - Стаж: 10 лет
- Сообщений: 1063
- Репутация:62[+] [-]
|
ну нафиг тогда этот раритетты, если можешь, расскажи и покажи ключи для арии .. используя мой пример батника .. многопоточность, без проверки сертификата, скачать в определенный файл. я не парюсь с многопоточностью и мегатонкими настройками )) aria2c.exe "%_url%" --check-certificate=false --console-log-level=error --allow-overwrite=true -x3 -s3 --dir=%_maindir% -o %_file%
|
wadimus
  - Стаж: 8 лет 5 месяцев
- Сообщений: 749
- Репутация:91[+] [-]
|
86589я не парюсь с многопоточностью и мегатонкими настройками )) ну, не скажи .. допустим, у меня в сборке около сотни авто-обновляемых ячеек, или я без много-поточности обновляю сборку за пару часов, а с фишками акселя за пол-часа - тут начнешь париться :)
|
Ander_73
  - Стаж: 8 лет 2 месяца
- Сообщений: 3983
- Репутация:127[+] [-]
|
Вот это и есть многопоточность: качать в три потока. Я обычно сразу втуливаю 8, гы. Рекомендую для пущей красивости:
|
korsak7
  - Стаж: 10 лет
- Сообщений: 1063
- Репутация:62[+] [-]
|
допустим, у меня в сборке около сотни авто-обновляемых ячеек, или я без много-поточности обновляю сборку за пару часов, а с фишками акселя за пол-часа - тут начнешь париться :) У меня другой подход к обновлению ячеек (говоря твоим языком) - поэтому мне это неважно. У меня выборочный подход и нет тотального обновления. Если я нативный установщик не переделываю - то зачем мне его качать и хранить? Вот тот же firefox. В этом случае при установке он качается напрямую с инета. А перепиленные установщики скармливаю в папку ЯД-агенту. Соответственно у меня 2 хранилища - на ЯД и копия на флешке. И прога при установке выбирает откуда качать "ячейку" Добавлено через 9 минут 41 секунда:
Рекомендую для пущей красивости: Задать интервал в секундах до вывода сообщения о прогрессе загрузки. Установка 0 запрещает вывод. По умолчанию: 60 задал. разницы не заметил, прогресс есть. в чём красявость ?
|
Страница 23 из 95
Текущее время: 21-Апр 02:26
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|