UncleFather » 16 июн 2016 19:51, Чт
Задача:
Необходимо скачать файл средствами Visual Basic Script с какого-либо сайта в интернете (URL нам заранее известен).
Решение:
Этот пример сценария скачивает два файла. Причем, сохранять он их может сразу же с другими именами, что и показано в примере.
Если путь для сохранения не существует, то скрипт создаст его автоматически.
Здесь же, в качестве примера, открывается умолчательный просмотровщик pdf-файлов со скачанным pdf-файлом.
Код: Выделить всё
'Инициализируем переменные, в которых задаем 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
Скачать архив со скриптом можно здесь:
[b][size=150]Задача:[/size][/b]
Необходимо скачать файл средствами Visual Basic Script с какого-либо сайта в интернете (URL нам заранее известен).
[hr][/hr]
[b][size=150]Решение:[/size][/b]
Этот пример сценария скачивает два файла. Причем, сохранять он их может сразу же с другими именами, что и показано в примере.
Если путь для сохранения не существует, то скрипт создаст его автоматически.
Здесь же, в качестве примера, открывается умолчательный просмотровщик pdf-файлов со скачанным pdf-файлом.
[spoiler title=Код VBS сценария:][code]'Инициализируем переменные, в которых задаем 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[/code][/spoiler]
Скачать архив со скриптом можно здесь: [attachment=0]DownloadingFiles.rar[/attachment]