Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] wget

Ответить
Настройки темы
CMD/BAT - [решено] wget

Ветеран


Сообщения: 2196
Благодарности: 727


Конфигурация

Профиль | Отправить PM | Цитировать


Нужна помощь в написании скрипта по запуску программы, скаченной и обновлённой с помощью wget
Код: Выделить весь код
wget -N http://ххх
Если обновления программы не произошло, запускать её не нужно.

Отправлено: 16:38, 01-10-2011

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


sov44, поскольку ошибки при этом не возникает (2.12 Exit Status), на мой взгляд, самый надёжный способ — посчитать контрольную сумму локального файла до вызова wget и после (File Checksum Integrity Verifier, Sigcheck, FSUM или скриптом на WSH/PoSH), Затем сравнить.

P.S. Можно, конечно, попробовать сравнивать дату/время до и после, поиграться с атрибутами и т.п. Но контрольная сумма — надёжнее.

Отправлено: 17:08, 01-10-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


Iska, а если как то попытаться выловить в командной строке wget строчку, что файл уже скачан и от неё пробовать, чтобы не пользоваться сторонним софтом?

Отправлено: 17:57, 01-10-2011 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


sov44, конечно, можно. Но тут хорошо бы посмотреть в исходный код wget, дабы убедиться в единственности данного сообщения. А так — например, вот:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

("%ProgramFiles%\WGet\wget.exe" --timestamping "http://download.sysinternals.com/Files/Sigcheck.zip" 2>&1 |^
findstr.exe /r /c:"^Server file no newer than local file .* -- not retrieving.$" >nul) && (
	echo Skipping
) || (
	echo Not skipping
)
endlocal
exit /b 0
P.S. Это только пример! Из данного кода не видно, был ли файл загружен или нет. Видно только — был или не был пропущен.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:55, 01-10-2011 | #4


Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


Iska, Спасибо! Именно то, что и нужно. Запуск прикручу.
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

(wget -N http://giskirov.ru/download/download.php?book=3 2>&1 |^
findstr.exe /r /c:"^Server file no newer than local file .* -- not retrieving.$" >nul) && (
	echo Обновления файла нет 
) || (
	echo Файл скачан и обновлён
)
endlocal
pause
exit /b 0

Отправлено: 21:22, 01-10-2011 | #5


Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


Упаковал в rar sfx батник рядом со скриптом установки программы. Программа скачалась в %temp% и и от туда установилась. Подскажите, как скаченную программу ( из %temp% ) скопировать в директорию, из которой был запущен rar sfx?

Отправлено: 00:47, 02-10-2011 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата sov44:
Спасибо! Именно то, что и нужно. »
sov44, нет! Вы меня так и не поняли:
Цитата Iska:
P.S. Это только пример! Из данного кода не видно, был ли файл загружен или нет. Видно только — был или не был пропущен. »
Это никак не то, что нужно. Допустим, Вы пытаетесь загрузить файл, загрузка по каким-то причинам обрывается, а пакетный файл в Вашем примере честно скажет — «Файл скачан и обновлён», что не есть верно. Понимаете?

Надо:

1. Отследить код возврата wget.
2. Если он нулевой — тогда уже имеет смысл проверять выдачу wget на наличие текста о пропуске загрузки, наподобие:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sURL=http://download.sysinternals.com/Files/Sigcheck.zip

call :GetTemporaryName

>"%TemporaryName%" 2>&1 "%ProgramFiles%\WGet\wget.exe" --timestamping "%sURL%" && (
	findstr.exe /r /c:"^Server file no newer than local file .* -- not retrieving.$" "%TemporaryName%" >nul && (
		echo Download Skipping
	) || (
		echo Download OK
	)
) || (
	echo Download Error
)

del /f /q "%TemporaryName%"

endlocal
exit /b 0
rem ==========================================================================

rem ==========================================================================
rem Функция GetTemporaryName()
rem
rem Серый форум / CMD/BAT: генерация пути для временного файла или папки
rem (http://forum.script-coding.com/viewtopic.php?id=6259)
rem ==========================================================================
:GetTemporaryName
    setlocal enableextensions enabledelayedexpansion

:NextName
    set sTempName=%temp%\temp%random%.tmp

    if exist "%sTempName%" goto :NextName

    set sProcName=%~0

    endlocal & set %sProcName:~4%=%sTempName%
    exit /b 0
rem ==========================================================================
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:11, 02-10-2011 | #7


Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


Iska, на Вашем примере не могу отследить переменную пути, откуда запущен rar sfx

Отправлено: 14:44, 02-10-2011 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


sov44, Вам и не надо отслеживать. Используйте параметр «--directory-prefix="<Путь для сохранения>"» в командной строке wget (Проект OpenNet: MAN wget (1) Команды и прикладные программы пользовательского уровня (FreeBSD и Linux)).
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:24, 02-10-2011 | #9


Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


Цитата Iska:
Надо:
1. Отследить код возврата wget. »
Как их отследить?

Отправлено: 07:06, 04-10-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] wget

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интернет - wget Vadikan Программное обеспечение Windows 14 04-06-2012 03:55
Установка из портов через PROXY (wget нету в настройках) kaEwituS Общий по FreeBSD 16 02-05-2009 21:19
Wget разбил скачиваемый ISO файл на две части, как теперь склеить? sfap Программное обеспечение Linux и FreeBSD 2 23-11-2007 12:44
как пользоваться wget ptt Хочу все знать 4 21-02-2004 01:06
Wget Michelleq3 Программное обеспечение Linux и FreeBSD 6 30-10-2003 22:39




 
Переход