我需要一个脚本,可以在新安装的Windows XP上运行,并从网上下载指定的文件,如http://www.python.org/ftp/python/2.6.2/python-2.6.2.msi方法来做到这一点没有手工制作HTTP / FTP请求或使用第三方程序,如wget? 我可以build议WScript.CreateObject(“internetexplorer.application”)会做的神奇,但它的文档是非常巨大的,谷歌沉默,一如既往:)。
刚刚发现这个粘贴在下面。 你可以用cscript来运行它,并安排它。
'设置你的设置
strFileURL =“http://www.domain.com/file.zip”
strHDLocation =“D:\ file.zip”
'取文件
设置objXMLHTTP = CreateObject(“MSXML2.XMLHTTP”)
objXMLHTTP.open“GET”,strFileURL,false
objXMLHTTP.send()
如果objXMLHTTP.Status = 200那么
设置objADOStream = CreateObject(“ADODB.Stream”)
objADOStream.Open
objADOStream.Type = 1'adTypeBinary
objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0'将stream位置设置为开始
设置objFSO = Createobject(“Scripting.FileSystemObject”)
如果objFSO.Fileexists(strHDLocation)那么objFSO.DeleteFile strHDLocation
设置objFSO = Nothing
objADOStream.SaveToFile strHDLocation
objADOStream.Close
设置objADOStream = Nothing
万一
设置objXMLHTTP = Nothing
当涉及到这样的事情时,VBScript是不合作的。 这种事情总是要求COM服务器不是正式的脚本引擎的一部分。
麦克斯韦使用MSXML2.XMLHTTP的build议似乎是一个很酷的方法。 我必须承认我以前没有遇到过这种伎俩。 还有各种商业COM服务器,将做文件下载。
这种types的问题是我正在将我的VBScript大部分转移到Powershell的原因之一。 因为Powershell可以无缝地使用.Net对象,所以做这样的事情要容易得多。
JR
该方法使用
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
是更优雅,不幸的是不是很便携,因为对象的版本在Windows的版本和更新中发生了很大的变化。
运用
WScript.CreateObject("internetexplorer.application")
可能会更好但不太优雅。
MSXML2.XMLHTTP是围绕旧的WinInet构build的。 有一个名为Msxml2.ServerXMLHTTP的更新的接口,它更可靠。 它build立在一个更新的MS WinHTTP堆栈上。 我build议直接调用WinHTTP。
只需使用CreateObject(“WinHttp.WinHttpRequest.5.1”)而不是创build一个MSXML2.XMLHTTP对象。 其余的代码保持不变。