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

Компьютерный форум 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

 

Пользователь


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

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


Про утилитку wget слыхали? Может помочь.

Отправлено: 13:57, 02-11-2009 | #2



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

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


Аватара для volk1234

Старовер


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

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


Цитата volk1234:
Желательно без доп. утилит. »
Ну если нельзя без доп утилит, то вопрос снимаю.

-------

Ю-ху!


Отправлено: 14:46, 02-11-2009 | #3


Googler


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

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


Цитата avolkov2009:
Про утилитку wget слыхали? Может помочь »
тогда уж лучше curl, по крайней мере для этих задач

Цитата volk1234:
Ну если нельзя без доп утилит, то вопрос снимаю »
штатно можно через VBS, который вызвать из CMD:
Script.CMD

Код: Выделить весь код
@Echo Off

Set ROOT=C:\TEST

Set KBFile1=autoit-v3.2.12.1-sfx.exe
Set KB_Url1=http://www.autoitscript.com/autoit3/files/archive/autoit/autoit-v3.2.12.1-sfx.exe

Set KBFile2=autoit-docs-v3.3.1.4-src.exe
Set KB_Url2=http://www.autoitscript.com/autoit3/files/beta/autoit/autoit-docs-v3.3.1.4-src.exe

Call :KB_TEST "%KBFile1%" "%KB_Url1%"
Call :KB_TEST "%KBFile2%" "%KB_Url2%"

Echo.
PAUSE

EXIT

:KB_TEST
<Nul Set /P $_X="%~1..."

If Exist "%ROOT%\%~1" Echo Ok& Exit /B
<Nul Set /P $_X=Loading

CScript //NoLogo "%~dpn0.vbs" "%ROOT%\%~1" "%~2"
Set ERR=%ErrorLevel%

<Nul Set /P $_X=
If %ERR% EQU 0 (Echo Ok     ) Else Echo ERROR  

Exit /B
Script.VBS

Код: Выделить весь код
If Wscript.Arguments.Count=2 Then
   WScript.Quit(HTTPFileGet(Wscript.arguments.Item(1), Wscript.arguments.Item(0)))
Else
   WScript.Quit(1)
End If

Function HTTPFileGet(strFileURL, strFileSave)
   Dim objXMLHTTP, objADOStream, objFSO
   HTTPFileGet = 1

   Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
   Set objADOStream = CreateObject("ADODB.Stream")
   Set objFSO = Createobject("Scripting.FileSystemObject")

   objXMLHTTP.Open "GET", strFileURL, False
   objXMLHTTP.Send()

   If objXMLHTTP.Status = 200 Then
      objADOStream.Open
      objADOStream.Type = 1

      objADOStream.Write objXMLHTTP.ResponseBody
      objADOStream.Position = 0

      If objFSO.FileExists(strFileSave) Then objFSO.DeleteFile strFileSave

      objADOStream.SaveToFile strFileSave
      objADOStream.Close

      HTTPFileGet = 0
   End If
End Function

P.S. файла для примера взяты от балды, для работы треба XP SP2

Последний раз редактировалось amel27, 03-11-2009 в 10:32. Причина: оформление

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:38, 03-11-2009 | #4


Аватара для volk1234

Старовер


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

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


Я может невнимательно смотрел справку к curl, но как определить подключен ли к интернету компьютер ??
Ибо команда
Код: Выделить весь код
curl -O http://.......file.exe
отрабатывает и при подключенном интернете и без него 0_o
только без интернета подключенного получается не файл, а пустышка.

Короче как определить подключен ли комп к интернету из cmd ?

-------

Ю-ху!


Отправлено: 01:25, 04-11-2009 | #5


Googler


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

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


volk1234, может использовать ключ "-I" ?
Код: Выделить весь код
curl -I http://.......file.exe

Отправлено: 08:28, 04-11-2009 | #6


Аватара для volk1234

Старовер


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

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


Цитата amel27:
volk1234, может использовать ключ "-I" ? »
Не помогает.

-------

Ю-ху!


Отправлено: 20:43, 05-11-2009 | #7


Googler


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

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


volk1234, странно... у меня вроде работает:
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions

Set CURL=%~dp0curl.exe

Set KBFile1=autoit-v3.2.12.1-sfx.exe
Set KB_Url1=http://www.autoitscript.com/autoit3/files/archive/autoit/autoit-v3.2.12.1-sfx.exe

Set KBFile2=autoit-docs-v3.3.1.4-src.exe
Set KB_Url2=http://www.autoitscript.com/autoit3/files/beta/autoit/autoit-docs-v3.3.1.4-src.exe

CALL :GET_PROXY

<Nul Set /P XYZ=URL "%KB_Url1%" Testing...
"%CURL%" -f -s -I "%KB_Url1%" %$X% >Nul
If ErrorLevel 1 (Echo ERROR:%ErrorLevel%) Else (Echo OK!)

<Nul Set /P XYZ=URL "%KB_Url2%" Testing...
"%CURL%" -f -s -I "%KB_Url2%" %$X% >Nul
If ErrorLevel 1 (Echo ERROR:%ErrorLevel%) Else (Echo OK!)

EXIT

: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

Отправлено: 07:00, 06-11-2009 | #8


Аватара для volk1234

Старовер


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

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


Пишу просто
Код: Выделить весь код
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

-------

Ю-ху!


Отправлено: 14:23, 06-11-2009 | #9


Googler


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

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


Цитата volk1234:
Ничего не скачивает »
логично, т.к. ключ "-I" только считывает параметры файла - в контексте вопроса о проверке его наличия по линку и проверке наличия интернета, скачать можно и так:
Код: Выделить весь код
curl -f -# -O http://download.microsoft.com/download/1/B/3/1B331878-8AF9-4642-94F4-0B0B0A9DD14A/WindowsXP-KB967715-x86-ENU.exe
Это сообщение посчитали полезным следующие участники:

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



Компьютерный форум 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




 
Переход