Vbscript 使用VBS下载文件
我有一个VBS脚本,生成一个url,从我网络上的服务器下载文件。我现在需要将文件下载到Vbscript 使用VBS下载文件,vbscript,Vbscript,我有一个VBS脚本,生成一个url,从我网络上的服务器下载文件。我现在需要将文件下载到“C:\rWallpaper\wallper.png”,URL存储在变量“URL”中 我希望它能像linux上的wget一样工作,只需下载并将文件保存到指定位置。您可以使用XMLHTTP下载并利用ADO流写入二进制数据 dim xHttp: Set xHttp = createobject("Microsoft.XMLHTTP") dim bStrm: Set bStrm = createobject("Ado
“C:\rWallpaper\wallper.png”
,URL存储在变量“URL”
中
我希望它能像linux上的wget一样工作,只需下载并将文件保存到指定位置。您可以使用XMLHTTP下载并利用ADO流写入二进制数据
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
上面的回答引发错误
写入文件失败。代码:800A0BBC
对我来说,但这是可行的: 在哪里
这篇文章很旧,但第一个代码答案中的错误是,你需要特权才能在、在桌面或C:\
上写,它可以工作。除了Alex K answer之外,如果对某人有帮助,我还使用了以下选项:%temp%
定义对象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
Set objWinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
调用带有文件的下载链接(本例中为图像)URL = "https://www.grupya.com/public/assets/img/logo.png" objWinHttp.open "GET", URL, False objWinHttp.send ""
将二进制数据保存到磁盘URL = "https://www.grupya.com/public/assets/img/logo.png" objWinHttp.open "GET", URL, False objWinHttp.send ""
URL = "https://www.grupya.com/public/assets/img/logo.png" objWinHttp.open "GET", URL, False objWinHttp.send ""
SaveBinaryData函数SaveBinaryData "c:\temp\my.png",objWinHttp.responseBody
尝试: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
我发现映射驱动器是一种很好的方法从那里,您可以定义文件的url的其余部分dim Z Z = "http:// .... " '(base url) Set FSO = CreateObject("Scripting.Filesystemobject") Set objNetwork = CreateObject("WScript.Network") '## This is for network drives If FSO.driveExists ("Z:") then objNetwork.RemoveNetworkDrive "Z:", True, True End If '## for adding 'Set objNetwork = CreateObject("WScript.Network") objNetwork.MapNetworkDrive "Z:" , Z
和目标文件名SourceFileName = "Z:\" & ...
然后你可以用DestinFileName = "..."
FSO.CopyFile SourceFileName, DestinFileName, True
这很有效,对我帮助很大,但您必须指定目标名称。问题是,如果您想使用服务器建议的原始文件名。@Racky after(如果服务器认为这样做),建议的文件名在。send
令牌之后,可通过文件名=
谢谢,效果很好-我刚刚把它包装成一个函数,最后一个是badabing badaboomAt!这段代码同时适用于hdr=xHttp.getResponseHeader(“内容处置”)获得
和http
,与我在stackoverflow中检查过的其他3个“解决方案”并排使用,它们不适用于https
。你应该得到一枚奖章如果接受的答案因该特定错误而失败,则问题是写入文件夹的权限,这并不难解决。你是对的,我使用提供的代码解决了问题。当文件大小较大时,你的方法非常慢(例如,400k pdf,我用20秒下载)标记的答案只需要2秒就可以下载同一个文件。我正在尝试下载一个png文件。它创建了一个新文件,但是png文件不是不完整就是没有图像。虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来为读者回答这个问题,而这些人可能不知道您的代码建议的原因。这将要求在目标计算机上安装curl,这在大多数windows计算机上是不正确的。https