CMD/BAT - [решено] Загрузка файла из интернета посредством команд CMD

Ответить
 • Просмотры: 1
Аватара пользователя
volk1234

Re: CMD/BAT - [решено] Загрузка файла из интернета посредством команд CMD

Сообщение volk1234 »

Пишу просто



Код:

Код: Выделить всё

curl -f -s -I http://download.microsoft.com/download/1/B/3/1B331878-8AF9-4642-94F4-0B0B0A9DD14A/WindowsXP-KB967715-x86-ENU.exe

Ничего не скачивает



Пишу



Код:

Код: Выделить всё

curl -O http://download.microsoft.com/download/1/B/3/1B331878-8AF9-4642-94F4-0B0B0A9DD14A/WindowsXP-KB967715-x86-ENU.exe

Скачивает файл WindowsXP-KB967715-x86-ENU.exe
Аватара пользователя
amel27

Re: CMD/BAT - [решено] Загрузка файла из интернета посредством команд CMD

Сообщение amel27 »

volk1234, так что мешает сначала проверить подключение с ключом "-I", а потом при успехе (отсутствии ошибки) уже запускать закачку?.... можно даже заранее считать размер файла, а потом по окончании закачки сверить и сделать вывод об успехе или неудаче
Аватара пользователя
volk1234

Re: CMD/BAT - [решено] Загрузка файла из интернета посредством команд CMD

Сообщение volk1234 »

Без подключения к интернету приведенная выше команда всеравно создает файл размером 4223 кб.
Аватара пользователя
amel27

Re: CMD/BAT - [решено] Загрузка файла из интернета посредством команд CMD

Сообщение amel27 »

volk1234, так что мешает сначала проверить подключение с ключом "-I", а потом при успехе (отсутствии ошибки) уже запускать закачку?.... можно даже заранее считать размер файла, а потом по окончании закачки сверить и сделать вывод об успехе или неудаче
Аватара пользователя
volk1234

Re: CMD/BAT - [решено] Загрузка файла из интернета посредством команд CMD

Сообщение volk1234 »

Ну наверное лень разбиратся, почему не работает. И незнание как проверить с ошибкой ли закончилась попытка проверить хост.

Наверное буду использовать wget....

Просто у меня скрипт работает с этими файлами и их наличие критично.

Хотя ваш пример с проверкой url и сравниванием размера файла с удовольствием посмотрел бы Изображение

И позаимствовал бы...
Аватара пользователя
amel27

Re: CMD/BAT - [решено] Загрузка файла из интернета посредством команд CMD

Сообщение amel27 »

Цитата volk1234:



не отрабатывала часть скрипта с прокси
CMD/BAT - [решено] Загрузка файла из интернета посредством команд CMD




угу, напартачил немного в последнем варианте - исправил




Цитата volk1234:



Вот какую петрушку показала команда из скрипта выше
CMD/BAT - [решено] Загрузка файла из интернета посредством команд CMD




я не знаток HTML, но по ходу отвечает какой-то прокси HTML-страницей, которая впоследствии должна обрабатывается обозревателем... CURL очевидно не способен обрабатывать такие редиректы - только непосредственые подключения, у меня тоже были траблы с закачкой по линкам типа "
http://www.site.com/cgi-bin/getfile.pl[b
]?[/b]dir/file.ext"




Цитата volk1234:



по какой- то причине удается соединится с "неким" сервером и скачать текстовый файл размером 4 223 байта -

поэтому и не срабатывает ошибка и проверка на размер файла
CMD/BAT - [решено] Загрузка файла из интернета посредством команд CMD




может проще вбить ожидаемый размер файла в переменную и уже с ним сравнивать?.. маловероятно, что он изменится
Аватара пользователя
volk1234

Re: CMD/BAT - [решено] Загрузка файла из интернета посредством команд CMD

Сообщение volk1234 »

Почемуто не отрабатывала часть скрипта с прокси (ругалась на синтаксис)-



Код:

Код: Выделить всё

-x %PROXY%

Убрал эту часть, оставил только загрузку с определением соединения. Странности с закачкой файла без соединения с интернетом остались.

Возможно это связанно с маршрутизацией в моей сети. Однако если отключить сетевую карту проверка соединения срабатывала.



Вот какую петрушку показала команда из скрипта вышеcurl -f -s -I "%~2"

Без соединения:

Изображение



С VPN соединением с интернетом

Изображение



То есть по какой- то причине удается соединится с "неким" сервером и скачать текстовый файл размером 4 223 байта -

поэтому и не срабатывает ошибка и проверка на размер файла Изображение
Аватара пользователя
amel27

Re: CMD/BAT - [решено] Загрузка файла из интернета посредством команд CMD

Сообщение amel27 »

Цитата volk1234:



тип файла должен быть application а не текст
CMD/BAT - [решено] Загрузка файла из интернета посредством команд CMD




а это вариант Изображение

Код: Выделить всё

@Echo Off
SetLocal EnableExtensions
Set KBFile1=WindowsServer2003-KB967715-x86-ENU.exe
Set KB_Url1=http://download.microsoft.com/download/1/A/2/1A234937-9572-408D-ACC9-3F99915CAC67/%KBFile1%
CALL :GET_PROXY
CALL :GET_FILE "%KBFile1%" "%KB_Url1%"
EXIT
:GET_FILE
 <Nul Set /P XYZ=Testing Connection...
 curl -f -s -I "%~2" %$X%|Find " 200 OK" >Nul
 If ErrorLevel 1 Echo ERROR [Not Responding]& Exit /B 1
 For /F "Skip=1 Tokens=1* Delims=: " %%i In (
  'curl -f -s -I "%~2" %$X%') Do Set %%i=%%j
 If /I "%Content-Type%"=="application/octet-stream" (
  Echo OK [%Content-Length% Bytes] ) Else Echo ERROR [Wrong Response]& Exit /B 2
 Echo Downloading "%~1"...
 curl -f -# -O "%~2" %$X%
 If Not Exist "%~1" Echo ERROR [Download not starting].& Exit /B 3
 For %%i In ("%~1") Do (
 If %%~zi EQU %Content-Length% Echo File Download Successfully!& Exit /B 0)
 Echo ERROR [Download interrupted abnormally]
Exit /B 4
:GET_PROXY
 Set $X=&Set $R=HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings
 For /F "Tokens=1,3" %%i In ('REG Query "%$R%"^|Find "Proxy"') Do Set %%i=%%j
 If "%ProxyEnable%"=="0x1" Set $X=-x %ProxyServer%
GoTo :EOF
Аватара пользователя
volk1234

Re: CMD/BAT - [решено] Загрузка файла из интернета посредством команд CMD

Сообщение volk1234 »

Можно еще проверять по веб вервру- IIS мало кто использует Изображение)

Да и тип файла должен быть application а не текст.

А текст - это наверное страничка провайдера...
Аватара пользователя
amel27

Re: CMD/BAT - [решено] Загрузка файла из интернета посредством команд CMD

Сообщение amel27 »

Цитата volk1234:



для чего ключи /B 0-4 ???
CMD/BAT - [решено] Загрузка файла из интернета посредством команд CMD




установка значения переменной окружения ERRORLEVEL при выходе из процедуры, т.е. 0 - успех, 1-4 - коды ошибок, для выбора альтернатив в основном скрипте сразу после "CALL :GET_FILE"
Ответить

Вернуться в «Скриптовые языки администрирования Windows»