Войти

Показать полную графическую версию : [решено] Если файл размером 0, выполнить предыдущую команду.


Freddy1984
23-04-2019, 11:20
Здравствуйте! Подскажите пожалуйста по одному интересному моменту.
С помощью wget (в пакетнике) сделал я закачку антивирусного сканера Dr.Web. Закинул его в планировщик винды, и он раз в сутки перезаписывает (так сказать обновляет) сканер. Всё казалось бы хорошо. Но бывает (не каждый день, но бывает) смотришь с утра, а wget по неизвестным причинам не может полностью закачать Dr.Web CureIt!.exe , а вместо него лежит тот же Dr.Web CureIt!.exe только размером 0.
Отсюда вопрос. Возможно ли с помощью команд сделать так, что в случае появления пустышки с нулём, пакетник перезапустил бы выполнение задачи загрузки сканера?
Код у меня такой:

@Echo off
set day=%DATE:~0,2%
set month=%DATE:~3,2%
set year=%DATE:~6,4%
wget -O "%~dp0\Dr.Web CureIt! [%day%.%month%.%year%].exe" http://download.geo.drweb.com/pub/drweb/cureit/cureit.exe --no-cache --no-dns-cache --continue --tries=10 --timeout=120
del /Q "D:\ANTIVIRUS SCANNER\Dr.Web CureIt!*.exe"
move /y "%~dp0\Dr.Web CureIt!*.exe" "D:\ANTIVIRUS SCANNER"


Как только не бадался я с wget. И --continue , и --tries=10 дописал, но всё равно в загрузке бывает сбой, и появляется нулёвка ((

Отсюда и возникла мысль возможной перепроверки закачки и в случае нулёвки повторить загрузку.

Если кто знает как это сделать, подскажите пожалуйста.
Спасибо.

sov44
23-04-2019, 12:11
Freddy1984, попробуйте с ключом -N

Freddy1984
23-04-2019, 12:41
попробовал, пишет: WARNING: timestamping does nothing in combination with -O

то есть -O не совместим с timestamping

Busla
23-04-2019, 12:45
Если вдуматься, "нулёвка" - это частный случай неполного/повреждённого файла. И решать стоит этот общий случай: проверять хэш или цифровую подпись.

Freddy1984
23-04-2019, 12:54
проверять хэш или цифровую подпись. »
нашел некий пример. как считаете, его вообще можно как то совместить со всем моим вышеизложенным?? :)
wget ftp://yourfile.zip && wget ftp://yourfile.zip.md5 && md5sum -c *.md5

или

wget ftp://yourfile{.zip,.zip.md5} && md5sum -c *.md5

или

wget -q -O- http://example.com/your_file | md5sum | sed 's:-$:local_file:' | md5sum -c

sov44
23-04-2019, 13:28
то есть -O не совместим с timestamping »
Ну так и уберите его. Попробуйте так
wget -N -P "%~dp0\Dr.Web CureIt" http://download.geo.drweb.com/pub/drweb/cureit/cureit.exe"

Freddy1984
23-04-2019, 13:36
Ну так и уберите его. Попробуйте так »
ок, просто не совсем ясно как сравнение по дате загрузки (он же -N ) может повлиять на вероятное появление нулёвки...

sov44
23-04-2019, 14:00
Freddy1984, ключ -N обновляет скачанный файл, нулевой файл должен замениться на полный.

Freddy1984
23-04-2019, 14:02
ключ -N обновляет скачанный файл »
ну ок, я такого описания в док. не нашел. спасибо. :)

Iska
23-04-2019, 17:11
Я бы сначала загружал файл в некоторое место, и только затем, только в случае удачной загрузки — копировал его заместо старого.

Freddy1984
23-04-2019, 17:41
только в случае удачной загрузки »
...а в случае неудачной загрузки, осуществить её перезапуск.

ок, только как это реализовать на практике?? :)

yurfed
23-04-2019, 18:25
Freddy1984, может вам хватит мутить с различными скриптами и прочим колдунством, но тупо сесть и разобраться в чём конкретно проблема? Вы так ещё не пробовали?
Закинул его в планировщик »А если прямо, просто обновить?
Та же версия антивируса....

Freddy1984
23-04-2019, 19:55
может вам хватит мутить с различными скриптами и прочим колдунством »
я понимаю что вы "ветеран". но можно нежнее? спасибо :)

А если прямо, просто обновить?
Та же версия антивируса.... »
вы уж конечно простите, но так в конце концов можно и договориться до того, что мол зачем вообще этот форум? есть же счёты которыми наши предки столетиями пользовались...

Iska
23-04-2019, 20:15
...а в случае неудачной загрузки, осуществить её перезапуск. »
Не надо. Отложите загрузку до очередного раза.

ок, только как это реализовать на практике?? »
GNU Wget 1.18 Manual: Exit Status (https://www.gnu.org/software/wget/manual/html_node/Exit-Status.html)
Как-то так:
wget.exe … && (
if exist "полный путь к загруженному файлу" (
copy /y "полный путь к загруженному файлу" "полный путь к целевому файлу"
)
)
И пусть там и --timestamping, и --continue будет, и что угодно.




© OSzone.net 2001-2012