J'ai un script VBS qui génère une URL pour télécharger un fichier à partir d'un serveur de mon réseau. Je dois maintenant télécharger le fichier dans "C:\rWallpaper\wallpaper.png", l'adresse URL est stockée dans la variable "url".
Si je souhaite que quelque chose comme wget sur linux fonctionne, il suffit de télécharger et d’enregistrer le fichier à un emplacement spécifié.
Vous pouvez télécharger en utilisant XMLHTTP et utiliser un flux ADO pour écrire les données binaires;
dim xHttp: Set xHttp = createobject("Microsoft.XMLHTTP")
dim bStrm: Set bStrm = createobject("Adodb.Stream")
xHttp.Open "GET", "http://example.com/someimage.png", False
xHttp.Send
with bStrm
.type = 1 '//binary
.open
.write xHttp.responseBody
.savetofile "c:\temp\someimage.png", 2 '//overwrite
end with
La réponse ci-dessus jeta l'erreur Write to file failed. Code: 800A0BBC
pour moi, mais cela fonctionna:
HTTPDownload http://www.emagcloud.com/europeansealing/FSA_ESA_Compression_Packing_Technical_Manual_v3/pubData/source/images/pages/page10.jpg", "C:\"
Où
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
En plus de Alex K répondre, j'ai utilisé ce qui suit si cela aide quelqu'un:
Définir objet
Set objWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
Appelez Lien de téléchargement avec un fichier (image dans notre cas)
URL = "https://www.grupya.com/public/assets/img/logo.png"
objWinHttp.open "GET", URL, False
objWinHttp.send ""
Enregistrer les données binaires sur le disque
SaveBinaryData "c:\temp\my.png",objWinHttp.responseBody
Fonction SaveBinaryData
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
Cet article est ancien, mais l'erreur dans la première réponse de code est qu'il vous faut des privilèges pour écrire en C: Essayez sur le bureau ou% temp%, cela fonctionne.