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

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

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

Аватара для volk1234

Старовер


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


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

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


Привет.

Пишу утилиту которая в числе прочего устанавливает обновления Windows. Если оно есть в папке со скриптом все хорошо.
Но хотелось бы для уменьшения размера скрипта (дабы не распространять с ним обновление) чтобы скрипт в случае отсутствия обновлениий
запрашивал загрузку с заранее известного адреса. Желательно без доп. утилит.

Переменные-
Код: Выделить весь код
%KBFile1% (уже заданное имя файла)
%KBFile2% (уже заданное имя файла)
%KB1_url% (соответственно путь для закачки файла обновлений 1)
%KB2_url%  (соответственно путь для закачки файла обновлений 2)

-------

Ю-ху!


Отправлено: 11:16, 01-11-2009

 

Аватара для volk1234

Старовер


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

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


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

-------

Ю-ху!


Отправлено: 18:12, 08-11-2009 | #11



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

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


Googler


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

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


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

Отправлено: 11:17, 09-11-2009 | #12


Аватара для volk1234

Старовер


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

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


Ну наверное лень разбиратся, почему не работает. И незнание как проверить с ошибкой ли закончилась попытка проверить хост.
Наверное буду использовать wget....
Просто у меня скрипт работает с этими файлами и их наличие критично.
Хотя ваш пример с проверкой url и сравниванием размера файла с удовольствием посмотрел бы
И позаимствовал бы...

-------

Ю-ху!


Последний раз редактировалось volk1234, 11-11-2009 в 00:32.


Отправлено: 00:10, 11-11-2009 | #13


Googler


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

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


volk1234, дык я выше давал примеры, еще вариант:

Код: Выделить весь код
@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 Not ErrorLevel 1 (Echo OK) Else Echo ERROR!& Exit /B 1

 <Nul Set /P XYZ=Get File Size...
 For /F "Tokens=2 Delims=: " %%i In (
  'curl -f -s -I "%~2" %$X%^|Find "Content-Length:"') Do Set KBSize1=%%i
 If Defined KBSize1 (Echo Content-Length: %KBSize1% Bytes) Else ERROR!& Exit /B 2

 Echo Download "%~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 %KBSize1% Echo File Download Successfully!& Exit /B 0)
 Echo ERROR! Download interrupted abnormally.& Echo.
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

Последний раз редактировалось amel27, 12-11-2009 в 11:42.


Отправлено: 04:29, 11-11-2009 | #14


Аватара для volk1234

Старовер


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

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


Почемуто не отрабатывала часть скрипта с прокси (ругалась на синтаксис)-
Код: Выделить весь код
-x %PROXY%
Убрал эту часть, оставил только загрузку с определением соединения. Странности с закачкой файла без соединения с интернетом остались.
Возможно это связанно с маршрутизацией в моей сети. Однако если отключить сетевую карту проверка соединения срабатывала.

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


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


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

-------

Ю-ху!


Последний раз редактировалось volk1234, 11-11-2009 в 22:34.


Отправлено: 21:39, 11-11-2009 | #15


Googler


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

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


Цитата volk1234:
не отрабатывала часть скрипта с прокси »
угу, напартачил немного в последнем варианте - исправил

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

Цитата volk1234:
по какой- то причине удается соединится с "неким" сервером и скачать текстовый файл размером 4 223 байта -
поэтому и не срабатывает ошибка и проверка на размер файла »
может проще вбить ожидаемый размер файла в переменную и уже с ним сравнивать?.. маловероятно, что он изменится

Отправлено: 05:59, 12-11-2009 | #16


Аватара для volk1234

Старовер


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

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


Можно еще проверять по веб вервру- IIS мало кто использует )
Да и тип файла должен быть application а не текст.
А текст - это наверное страничка провайдера...

-------

Ю-ху!


Отправлено: 11:01, 12-11-2009 | #17


Googler


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

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


Цитата volk1234:
тип файла должен быть application а не текст »
а это вариант
Код: Выделить весь код
@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
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:09, 12-11-2009 | #18


Аватара для volk1234

Старовер


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

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


Проверил на выделенке на работе - вроде работает. Еще проверю дома на VPN...,

А для чего ключи /B 0-4 ???

-------

Ю-ху!


Последний раз редактировалось volk1234, 12-11-2009 в 15:36.


Отправлено: 14:58, 12-11-2009 | #19


Googler


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

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


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

Отправлено: 01:47, 13-11-2009 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Разрыв pppoe подключения и запуск приложения посредством cmd antikiller_bm Скриптовые языки администрирования Windows 1 29-12-2009 12:58
CMD/BAT - [решено] Помогите запустить CMD-файл из CMD-файла с параметрами Oleg48 Скриптовые языки администрирования Windows 2 18-11-2009 11:08
Интернет - Настройка интернета на windows 7 (посредством mer) Frag-o-Matik Microsoft Windows 7 0 13-09-2009 11:37
CMD/BAT - [решено] Нужна помощ в переписании команд из cmd в command.com, или на чтонибудь еще TruLander Скриптовые языки администрирования Windows 6 20-04-2009 17:32
Помогите пожалуйста не срабатывает команда из*cmd файла запускаемого из RanOnceEx.cmd vovchiku Автоматическая установка Windows 2000/XP/2003 6 25-09-2007 23:38




 
Переход