Alexander A Manaeff -

 
 

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

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

Модератор: UncleFather

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

Сообщение UncleFather » 16 июн 2016 19:51, Чт

Задача:

Необходимо скачать файл средствами 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
(2.18 КБ) Скачиваний: 350
Аватара пользователя
UncleFather
Site Admin
 
Сообщения: 1326
Зарегистрирован: 17 авг 2004 16:20, Вт

Вернуться в Visual Basic

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Alexander A Manaeff -
@Mail.ru .