Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Если файл размером 0, выполнить предыдущую команду. (http://forum.oszone.net/showthread.php?t=340222)

Freddy1984 23-04-2019 11:20 2868798

Если файл размером 0, выполнить предыдущую команду.
 
Здравствуйте! Подскажите пожалуйста по одному интересному моменту.
С помощью 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 2868804

Freddy1984, попробуйте с ключом -N

Freddy1984 23-04-2019 12:41 2868809

попробовал, пишет: WARNING: timestamping does nothing in combination with -O

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

Busla 23-04-2019 12:45 2868812

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

Freddy1984 23-04-2019 12:54 2868813

Цитата:

Цитата Busla
проверять хэш или цифровую подпись. »

нашел некий пример. как считаете, его вообще можно как то совместить со всем моим вышеизложенным?? :)
Код:

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 2868821

Цитата:

Цитата Freddy1984
то есть -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 2868823

Цитата:

Цитата sov44
Ну так и уберите его. Попробуйте так »

ок, просто не совсем ясно как сравнение по дате загрузки (он же -N ) может повлиять на вероятное появление нулёвки...

sov44 23-04-2019 14:00 2868830

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

Freddy1984 23-04-2019 14:02 2868831

Цитата:

Цитата sov44
ключ -N обновляет скачанный файл »

ну ок, я такого описания в док. не нашел. спасибо. :)

Iska 23-04-2019 17:11 2868860

Я бы сначала загружал файл в некоторое место, и только затем, только в случае удачной загрузки — копировал его заместо старого.

Freddy1984 23-04-2019 17:41 2868863

Цитата:

Цитата Iska
только в случае удачной загрузки »

...а в случае неудачной загрузки, осуществить её перезапуск.

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

yurfed 23-04-2019 18:25 2868865

Freddy1984, может вам хватит мутить с различными скриптами и прочим колдунством, но тупо сесть и разобраться в чём конкретно проблема? Вы так ещё не пробовали?
Цитата:

Цитата Freddy1984
Закинул его в планировщик »

А если прямо, просто обновить?
Та же версия антивируса....

Freddy1984 23-04-2019 19:55 2868874

Цитата:

Цитата yurfed
может вам хватит мутить с различными скриптами и прочим колдунством »

я понимаю что вы "ветеран". но можно нежнее? спасибо :)

Цитата:

Цитата yurfed
А если прямо, просто обновить?
Та же версия антивируса.... »

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

Iska 23-04-2019 20:15 2868880

Цитата:

Цитата Freddy1984
...а в случае неудачной загрузки, осуществить её перезапуск. »

Не надо. Отложите загрузку до очередного раза.

Цитата:

Цитата Freddy1984
ок, только как это реализовать на практике?? »

GNU Wget 1.18 Manual: Exit Status
Как-то так:
Код:

wget.exe … && (
        if exist "полный путь к загруженному файлу" (
                copy /y "полный путь к загруженному файлу" "полный путь к целевому файлу"
        )
)

И пусть там и --timestamping, и --continue будет, и что угодно.


Время: 21:48.

Время: 21:48.
© OSzone.net 2001-