wadimus
- Стаж: 8 лет
- Сообщений: 749
- Репутация:91[+] [-]
|
Привет, а дату можно узнать? млин .. работаю .. тестирую список большой, более 250 ячеек .. тестирование успешно, если появилась новая версия и она успешно скачалась. вот для затравки KFA (тема поднималась на ру-борде, там даже бат-файл есть .. у меня попроще)@echo off CD /d "%~dp0" SetLocal EnableExtensions EnableDelayedExpansion set "h1=http://dm.kaspersky-labs.com/ru-RU/KFA/17.0.0.611" set "h2=http://dm.kaspersky-labs.com/bases/kavkis2017/KFA" set "ver=17.0.0.611" echo !> "%~dp0name0.txt" ("%~dp0..\Scripts\wget.exe" -q -O- "%h1%" | findstr /R /C:"href=") >"%~dp0down.txt" for %%a in ("%~dp0down.txt") do set size=%%~za if %size%==0 goto 1 <"%~dp0down.txt" (for /f "tokens=1* delims=[]" %%a in ('find /n /v ""') do ( set "s%%a=%%b" & call :m %h1% "%%b" )) ("%~dp0..\Scripts\wget.exe" -q -O- "%h2%" | findstr /R /C:"href=") >"%~dp0down.txt" <"%~dp0down.txt" (for /f "tokens=1* delims=[]" %%a in ('find /n /v ""') do ( set "s%%a=%%b" & call :m %h2% "%%b" )) echo %ver%> "%~dp0version.txt" echo %date%> "%~dp0date.txt" echo 0> "%~dp0name0.txt" :1 del "%~dp0down.txt" Exit /B :m FOR /F "tokens=3 delims=<>" %%i in ("%~2") do set f=%%i "%~dp0..\Scripts\wget.exe" -N --waitretry=5 -t5 -T15 "%~1/%f%" -O "%~dp0Setup\%f%" Exit /B заодно продумал защиту инсталлятора от внезапного прекращения обновления .. всё будет
|
wadimus
- Стаж: 8 лет
- Сообщений: 749
- Репутация:91[+] [-]
|
LcHNextGen, погляди, это второй заход:set "h2=http://dm.kaspersky-labs.com/bases/kavkis2017/KFA" ... ("%~dp0..\Scripts\wget.exe" -q -O- "%h2%" | findstr /R /C:"href=") >"%~dp0down.txt" <"%~dp0down.txt" (for /f "tokens=1* delims=[]" %%a in ('find /n /v ""') do ( set "s%%a=%%b" & call :m %h2% "%%b" )) как раз и качаются свежие базы файлы x64 и x86 тоже закачиваются .. мне не понятно, в них есть ссылки такие:/common/dotNetFx40_Client_x86_x64.exe 43000680 1CF262F35322D6C9C7A27FCA513FC269 /bases/kavkis2017/KFA/index-bases-x86.txt /sharedbases/kavkis2017/index-sharedbases.txt /kleaner/Interactive2017/Global/index-kleaner.txt их тоже надо закачивать? как? откуда ссылки? сейчас в подпапке Setup (её надо создать внутри ячейки!) после скачивания 25 файлов (оффлайн инсталлятор + свежие базы) .. какие еще нужны файлы? в твоей раздаче на бабочке по сравнению с моими есть 2 файла: kleaner.cab и sharedbases.cab .. откуда они? их нет в офф-ссылках ..
|
LcHNextGen
- Стаж: 7 лет 3 месяца
- Сообщений: 3
- Репутация:0[+] [-]
|
wadimus, wget это умеет, берет ссылки из списка в листе. sharedbases.dll берет по списку вот от сюда http://dm.kaspersky-labs.com/sharedbases/kavkis2017/ Из родительского каталога, если самому пролазить как и куда он лезет за файлами становится всё ясно. Единственно он не качает /common/dotNetFx40_Client_x86_x64.exe http://dm.kaspersky-labs.com/common/ Хотя должен быть, как я понимаю, устанавливается данный компонент, у кого отсутствует NET Framework 4 Хотя и не обязателен, сейчас он почти у всех стоит.
|
Отправлено: 28-Авг-2017 11:15
(спустя 1 час 33 минуты)
wadimus
- Стаж: 8 лет
- Сообщений: 749
- Репутация:91[+] [-]
|
окончательный вариант с комментами:@echo off CD /d "%~dp0" SetLocal EnableExtensions EnableDelayedExpansion echo ... KFA :: список ссылок, откуда будет собираться офф-лайновый инсталлятор set "h1=http://dm.kaspersky-labs.com/ru-RU/KFA/17.0.0.611" set "h2=http://dm.kaspersky-labs.com/bases/kavkis2017/KFA" set "h3=http://dm.kaspersky-labs.com/sharedbases/kavkis2017" set "h4=http://dm.kaspersky-labs.com/kleaner/Interactive2017/Global" :: и их количество set /a num=4 :: версия, наверное лишняя тут, но пусть будет :) set "ver=17.0.0.611" :: путь, куда будут скачиваться файлы .. относительно текущего каталога :: знак \ в конце не указываем для лучшей визуальности :: нужный каталог создать заранее!! :: и желательно (но необязательно) его очистить set "w=Setup" :: если скачиваем в текущий каталог (а это нежелательно!), то :: set "w=." :: для каждой ссылки скачивается листинг файлов в рабочий файл down.txt :: где каждая строка - это ссылка на файл и техническая информация об нём :: далее эта строка передается в подпрограмму, которая и скачивает файл :: первый цЫкл по всем ссылкам и второй внутренний цЫкл по всем строкам (которые содержат нужные файлы) For /L %%i IN (1,1,%num%) DO ( ("%~dp0..\Scripts\wget.exe" -q -O- "!h%%i!" | findstr /R /C:"href=") >"%~dp0down.txt" <"%~dp0down.txt" (for /f "tokens=1* delims=[]" %%a in ('find /n /v ""') do ( set "s%%a=%%b" & call :m !h%%i! "%%b" )) ) :: лишние файлы убираем del "%~dp0down.txt" :: и записываем в файл date.txt текущую дату echo %date%> "%~dp0date.txt" Exit /B :: подпрограмма, в неё передаются два аргумента: ссылка и текстовая строка, содержащая ссылку на файл :: из строки выделяется имя файла, и он скачивается по переданной ссылке :m FOR /F "tokens=3 delims=<>" %%i in ("%~2") do set f=%%i "%~dp0..\Scripts\wget.exe" -N --waitretry=5 -t5 -T15 "%~1/%f%" -O "%~dp0%w%\%f%" Exit /B на сегодня число скачанных файлов 29 штуков общим весом 214.544.191 (мерял в любимом FAR-е)
|
wadimus
- Стаж: 8 лет
- Сообщений: 749
- Репутация:91[+] [-]
|
LcHNextGen, проверь .. если всё ок! могу на ру-борде отписаться .. ибо тамошний оффлайн-загрузчик как учебник по квантовой механике (тёмный лес :) )
|
Отправлено: 31-Авг-2017 07:15
(спустя 1 час 46 минут)
wadimus
- Стаж: 8 лет
- Сообщений: 749
- Репутация:91[+] [-]
|
bios83, https://toolslib.net/downloads/finish/1-adwcleaner/ там ищем строку:и далее ссылка, она типа: https://toolslib.net/downloads/finish/1-adwcleaner/...W644DGi095GrfWy/ вот полный код с версией"%~dp0..\Scripts\wget.exe" -N --waitretry=5 -t5 -T15 "https://toolslib.net/downloads/finish/1-adwcleaner/" -O "%~dp0down.txt" findstr /R /C:"It does not work" "%~dp0down.txt" >"%~dp0down1.txt" FOR /F "usebackq tokens=2 delims==>" %%a in ("%~dp0down1.txt") do set f=%%a set f=%f:~1,-1% "%~dp0..\Scripts\wget.exe" -N --waitretry=5 -t5 -T15 "https://toolslib.net%f%" -O "%~dp0adwcleaner.exe findstr /R /C:"Thank you for downloading AdwCleaner (" "%~dp0down.txt" >"%~dp0down1.txt" FOR /F "usebackq tokens=2 delims=()" %%a in ("%~dp0down1.txt") do set f=%%a echo %f%> "%~dp0version.txt" del "%~dp0down.txt" del "%~dp0down1.txt"
|
Отправлено: 31-Авг-2017 08:16
(спустя 1 час 1 минута)
bios83
- Стаж: 8 лет 11 месяцев
- Сообщений: 101
- Репутация:16[+] [-]
|
wadimus, Спасибо большое. Я тут немножко по экспериментировал с утилитой http2cli и вот ещё один вариант.Set scripts=%~dp0 for /F "tokens=2 delims=+++" %%i in ('%scripts%http2cli.exe https://toolslib.net/downloads/finish/1/ 2^|find "It does not work"') do set from=%%i "%scripts%wget.exe" -N --waitretry=5 -t5 -T15 "https://toolslib.net%from%" -O "%~dp0adwcleaner.exe"
|
wadimus
- Стаж: 8 лет
- Сообщений: 749
- Репутация:91[+] [-]
|
bios83, ну, или так :) однако .. - модульность - понятность кода (даже если сам или чужой человек поглядит код - всё поймет) - меньшее использование тернета - и главное (и иногда самое трудное) - получение версии скачиваемого продукта поэтому: - скачиваем офф-страницу (где и ссылки и версия) один раз! - тут же проверяем результаты на доступность тернета (скачали страницу или получили текстовый файл с поисковым приложение), если результаты скачивания или обработки равны нули - прекращаем всё - скачиваем дистрибутив не в готовый продукт, а в промежуточный! если его размер равен 0 (нет или тернета или доступности или сами прервали), то оставляем предыдущий дистрибутив. для получения версии используем уже скачанное, повторное использование тернета недопустимо пример ..echo ... Core Temp :: name0.txt - маркер .. ! - крайнее обновление было с ошибками :: если там пусто - всё ок! echo !> "%~dp0name0.txt" ("%~dp0..\Scripts\wget.exe" -q -O- "http://www.alcpu.com/CoreTemp" | findstr /R /C:"Core Temp [0-9]") >"%~dp0down.txt" :: скачали офф-страницу и её обработали :: если результат равен нулю (нет тернета) идем нафиг :) for %%a in ("%~dp0down.txt") do set size=%%~za if %size%==0 goto 1 :: скачиваем дистрибутив во временные файлы :: если он равен нулю - идем нафиг "%~dp0..\Scripts\wget.exe" -N --waitretry=5 -t5 -T15 "http://www.alcpu.com/CoreTemp/Core-Temp-setup.exe" -O "%~dp0Core-Temp-setup.exe.~" for %%a in ("%~dp0Core-Temp-setup.exe.~") do set size=%%~za if %size%==0 goto 1 :: что-то скачали :: переименовываем временный файл в нормальный del "%~dp0Core-Temp-setup.exe" ren "%~dp0Core-Temp-setup.exe.~" "Core-Temp-setup.exe" :: ищем версию и записываем её в файл version.txt FOR /F "usebackq tokens=2 delims=>:" %%a in ("%~dp0down.txt") do set f=%%a set f=%f:*p =% echo %f%> "%~dp0version.txt" :: пишем дату и зануляем маркер-файл echo %date%> "%~dp0date.txt" echo 0> "%~dp0name0.txt" :1 :: чистим временное del "%~dp0down.txt" del "%~dp0*.~" /q
|
bios83
- Стаж: 8 лет 11 месяцев
- Сообщений: 101
- Репутация:16[+] [-]
|
Подскажи мне пожалуйста а у тебя есть оболочка под ячейки, чтобы читала имя программы версию дату и запускала? Я по твоему примеру создаю рядом с программой текстовый документ с датой, версией программы и название программы пример:echo %DATE%-adwcleaner-%from%> "%~dp0adwcleaner_version.txt" А в конце после того как MInst пробежался, запускается скрипт который пробегает по всем каталогом читает текстовые документы с версией и вставляет В один текстовый документ пример: @echo off cd /d "%~dp0"echo =======%DATE%======= > "%~dp0ver.txt" FOR /r %%j in (*version.txt) do type "%%j" >> "%~dp0ver.txt" start "" "%~dp0Portable\AkelPad\AkelPad.exe" "%~dp0ver.txt" EXIT
|
Отправлено: 31-Авг-2017 11:10
(спустя 1 час 30 минут)
wadimus
- Стаж: 8 лет
- Сообщений: 749
- Репутация:91[+] [-]
|
bios83, млин, с языка сорвал прям .. думал давно, как автообновляемые инсталляторы внедрить в оболочку типа MInstAll (ведь в ini-файлы нужны реальные цыфры версий) .. типа такого:[--тут вставляем номер по цыклу--] Group= -тут номер группы -- Name=-- тут вставляем содержимое файла name.txt -- Hint=-- тут можно сделать отдельный файл краткого описания инсталлятора типа name2.txt и копировать его сюда -- Patch={Patch}\install\-- тут каталог --\ins.bat Ver=-- тут вставляем версию из файла version.txt
|
Страница 3 из 9
Текущее время: 14-Дек 05:25
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|