VBS. Как скачать файл из Internet

Здесь обсуждаются вопросы по программированию на Visual Basic.


Модератор: UncleFather

Аватара пользователя
UncleFather
Site Admin
Сообщения: 1504
Зарегистрирован: 17 авг 2004 16:20, Вт
Контактная информация:

VBS. Как скачать файл из Internet

Сообщение UncleFather »

Задача:

Необходимо скачать файл средствами Visual Basic Script с какого-либо сайта в интернете (URL нам заранее известен).


Решение:

Этот пример сценария скачивает два файла. Причем, сохранять он их может сразу же с другими именами, что и показано в примере.
Если путь для сохранения не существует, то скрипт создаст его автоматически.

Здесь же, в качестве примера, открывается умолчательный просмотровщик pdf-файлов со скачанным pdf-файлом.

Код VBS сценария:

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

'Инициализируем переменные, в которых задаем URL-ы скачивания и пути для сохранения
Dim  sLink0, sLink1, sFileName0, sFileName1
 sLink0     = "http://my.site.com/files/file01.pdf"
 sFileName0 = "C:\Temp\Temp\Temp\file05.pdf"
 sLink1     = "http://your.site.ru/files/shmiles/file003.exe"
 sFileName1 = "C:\Temp\Temp\Temp\Temp\Temp\Temp\SSDB\Execution.exe"

 Set WshShell = CreateObject("WScript.Shell") 

'Скачиваем и сохраняем первый файл
 URLGet sLink0, sFileName0
 WScript.Sleep 100
 
'Открываем скачанный pdf-файл развернутый в окно и не ждем его закрытия
 WshShell.Run sFileName0, 4, false

'Скачиваем и сохраняем второй файл
 URLGet sLink1, sFileName1
 WScript.Sleep 100

'Завершаем скрипт
 Set WshShell = Nothing
 WScript.Quit 0

'Функция для скачивания и сохранения файлов
Function URLGet(URL, SaveAs)
'Если вдруг в URL используется прямой слэш, заменяем его на обратный
 URL = Replace(URL,"\","/")
 FileName = SaveAs
 Set XMLHTTP = CreateObject("Microsoft.XMLHTTP")
'Открываем запрос GET на скачивание файла
 XMLHTTP.Open "GET",URL,"False"
 XMLHTTP.Send

'Если файл существует, качаем его
 if XMLHTTP.statustext = "OK" then
  URLGet = "OK"
  Set ADOStream = CreateObject("ADODB.Stream")
  ADOStream.type = 1
  ADOStream.Open
  ADOStream.Write XMLHTTP.responseBody
  Set fso = WScript.CreateObject("Scripting.FileSystemObject")

'Разделяем полный путь на путь и имя файла
  i = InStrRev(FileName, "\") 'позиция последнего   Name = Mid(FileName, i + 1)
  Folder = Left(FileName, i - 1)
  'MsgBox FileName & vbLf & Name & vbLf & Folder

'Если нужного нам пути не существует, то создаем его
  If fso.FolderExists(Folder) = false Then
	'MsgBox Folder
	WshShell.Run "cmd /c mkdir " & Folder, 0, true 	
  End If

'Если по заданному пути существует файл с таким же именем, как и скачиваемый, то удаляем его
  if fso.FileExists(FileName) then fso.DeleteFile(FileName)

'Сохраняем скачанный файл и закрываем поток
  ADOStream.SaveToFile FileName, 2
  ADOStream.Close
  Set ADOStream = Nothing
 end if
 Set XMLHTTP = Nothing
End Function

Скачать архив со скриптом можно здесь:

DownloadingFiles.rar
(1.08 КБ) 821 скачивание

Alexander A. Manaeff©

Понравилась статья? Будем крайне признательны за репосты в соцсетях! Материально поддержать проект можно здесь

Мои странички:
ВКонтакте
Одноклассники
Youtube
Facebook
Instagram

Изображение
Изображение
Изображение
Изображение