Download a file with VBS

匿名 (未验证) 提交于 2019-12-03 01:49:02

问题:

Ive got a VBS Script that generates an url to download a file from a server on my network. I now need to download the file to "C:\rWallpaper\wallpaper.png", the URL is stored in the variable "url"

Id like it to work something like wget on linux, just download and save the file to a specified location.

回答1:

You can download using XMLHTTP and leverage an ADO stream to write the binary data;

dim xHttp: Set xHttp = createobject("Microsoft.XMLHTTP") dim bStrm: Set bStrm = createobject("Adodb.Stream") xHttp.Open "GET", "http://bla.com/xxx.png", False xHttp.Send  with bStrm     .type = 1 '//binary     .open     .write xHttp.responseBody     .savetofile "c:\temp\xxx.png", 2 '//overwrite end with 


回答2:

The above answer threw the error Write to file failed. Code: 800A0BBC for me, however this worked:

 HTTPDownload http://www.emagcloud.com/europeansealing/FSA_ESA_Compression_Packing_Technical_Manual_v3/pubData/source/images/pages/page10.jpg", "C:\" 

Where

Sub HTTPDownload( myURL, myPath ) ' This Sub downloads the FILE specified in myURL to the path specified in myPath. ' ' myURL must always end with a file name ' myPath may be a directory or a file name; in either case the directory must exist ' ' Written by Rob van der Woude ' http://www.robvanderwoude.com ' ' Based on a script found on the Thai Visa forum ' http://www.thaivisa.com/forum/index.php?showtopic=21832      ' Standard housekeeping     Dim i, objFile, objFSO, objHTTP, strFile, strMsg     Const ForReading = 1, ForWriting = 2, ForAppending = 8      ' Create a File System Object     Set objFSO = CreateObject( "Scripting.FileSystemObject" )      ' Check if the specified target file or folder exists,     ' and build the fully qualified path of the target file     If objFSO.FolderExists( myPath ) Then         strFile = objFSO.BuildPath( myPath, Mid( myURL, InStrRev( myURL, "/" ) + 1 ) )     ElseIf objFSO.FolderExists( Left( myPath, InStrRev( myPath, "\" ) - 1 ) ) Then         strFile = myPath     Else         WScript.Echo "ERROR: Target folder not found."         Exit Sub     End If      ' Create or open the target file     Set objFile = objFSO.OpenTextFile( strFile, ForWriting, True )      ' Create an HTTP object     Set objHTTP = CreateObject( "WinHttp.WinHttpRequest.5.1" )      ' Download the specified URL     objHTTP.Open "GET", myURL, False     objHTTP.Send      ' Write the downloaded byte stream to the target file     For i = 1 To LenB( objHTTP.ResponseBody )         objFile.Write Chr( AscB( MidB( objHTTP.ResponseBody, i, 1 ) ) )     Next      ' Close the target file     objFile.Close( ) End Sub 



回答3:

In addition to Alex K answer, I used the following if it helps someone :

Define object

Set objWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1") 

Call Download link with a file ( image in our case )

URL = "https://www.grupya.com/public/assets/img/logo.png" objWinHttp.open "GET", URL, False objWinHttp.send "" 

Save the Binary data to Disk

SaveBinaryData "c:\temp\my.png",objWinHttp.responseBody 

SaveBinaryData Function

Function SaveBinaryData(FileName, Data)  ' adTypeText for binary = 1 Const adTypeText = 1 Const adSaveCreateOverWrite = 2  ' Create Stream object Dim BinaryStream Set BinaryStream = CreateObject("ADODB.Stream")  ' Specify stream type - we want To save Data/string data. BinaryStream.Type = adTypeText  ' Open the stream And write binary data To the object BinaryStream.Open BinaryStream.Write Data  ' Save binary data To disk BinaryStream.SaveToFile FileName, adSaveCreateOverWrite  End Function 


回答4:

This post is old, but the error in the fisrt code answer is that you need privileges to write at C:. Try at desktop or %temp%, it works.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!