Skip to content

Instantly share code, notes, and snippets.

@udawtr udawtr/wget.vbs
Last active Jan 3, 2020

Embed
What would you like to do?
wget.vbs - similar to wget but written in vbscript
'wget.vbs - similar to wget but written in vbscript
'based on a script by Chrissy LeMaire
' Usage
if WScript.Arguments.Count < 1 then
MsgBox "Usage: wget.vbs <url> (file)"
WScript.Quit
end if
' Arguments
URL = WScript.Arguments(0)
if WScript.Arguments.Count > 1 then
saveTo = WScript.Arguments(1)
else
parts = split(url,"/")
saveTo = parts(ubound(parts))
end if
' Fetch the file
Set objXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")
objXMLHTTP.open "GET", URL, false
objXMLHTTP.send()
If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1 'adTypeBinary
objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0 'Set the stream position to the start
Set objFSO = Createobject("Scripting.FileSystemObject")
If objFSO.Fileexists(saveTo) Then objFSO.DeleteFile saveTo
Set objFSO = Nothing
objADOStream.SaveToFile saveTo
objADOStream.Close
Set objADOStream = Nothing
End if
Set objXMLHTTP = Nothing
' Done
WScript.Quit
@MalikKillian

This comment has been minimized.

Copy link

MalikKillian commented Jul 3, 2013

MSXML2.ServerXMLHTTP can be used in place of MSXML2.XMLHTTP if you encounter "Access is denied" errors.

@udawtr

This comment has been minimized.

Copy link
Owner Author

udawtr commented Nov 28, 2013

@MalikKillian
Thanks. Your comment is very useful to me.

@Abhinav-Biswas

This comment has been minimized.

Copy link

Abhinav-Biswas commented Jul 7, 2015

how to provide proxy server details (host/username/password) in this script?

@bitnetwork

This comment has been minimized.

Copy link

bitnetwork commented Apr 2, 2016

For you jscripties out there, I optimized this for jscript here: https://gist.github.com/BitNetwork/b6f7ef23fac1044e5dfb1187fd1936af

@OdeV66

This comment has been minimized.

Copy link

OdeV66 commented Nov 13, 2017

Hi, when running the VBS I'm getting 'Invalid URL', while in fact, it isn't? Literally copying that into the browser does get me to that file/page.
Any ideas please?
image

@pravyroxor

This comment has been minimized.

Copy link

pravyroxor commented Apr 3, 2019

Some zip files downloaded using this script ending with error:
Line: 31
Char: 1
Error: Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
Code: 800A0BB9
Source: ADODB.Stream

@Robkof2002

This comment has been minimized.

Copy link

Robkof2002 commented Apr 18, 2019

Resolvendo erro : NET::ERR_CERT_COMMON_NAME_INVALID

'wget.vbs - similar to wget but written in vbscript
'based on a script by Chrissy LeMaire

' Usage
if WScript.Arguments.Count < 1 then
MsgBox "Usage: wget.vbs (file)"
WScript.Quit
end if

' Arguments
URL = WScript.Arguments(0)
if WScript.Arguments.Count > 1 then
saveTo = WScript.Arguments(1)
else
parts = split(url,"/")
saveTo = parts(ubound(parts))
end if

' Fetch the file
Const SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS = 13056
Set objXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")

objXMLHTTP.open "GET", URL, false
objXMLHTTP.setOption(2) = SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS
Call objXMLHTTP.SetRequestHeader("Content-Type", "text/xml")
objXMLHTTP.send()

If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1 'adTypeBinary

objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0 'Set the stream position to the start

Set objFSO = Createobject("Scripting.FileSystemObject")
If objFSO.Fileexists(saveTo) Then objFSO.DeleteFile saveTo
Set objFSO = Nothing

objADOStream.SaveToFile saveTo
objADOStream.Close
Set objADOStream = Nothing
End if

Set objXMLHTTP = Nothing

' Done
WScript.Quit

@bofhbug

This comment has been minimized.

Copy link

bofhbug commented May 15, 2019

Please note: This only works with http: or https with the outdated TLS 1.0
TLS 1.2 is NOT a default secure protocol in WinHTTP in Windows:
https://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-a-default-secure-protocols-in
https://gist.github.com/BitNetwork/b6f7ef23fac1044e5dfb1187fd1936af#gistcomment-2609387

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.