我没有正式的脚本编写背景,所以我为我的无知而道歉。我试图找到一种方法使用vbscript从互联网下载csv文件到文件位置。在引用Web之后,我能够在一种情况下使用URL和新文件位置/名称的参数成功完成此操作。但是,我想将它们串在一起形成for循环以重复多次,因此在命令行中添加参数似乎不会起作用。我意识到变量不能有周期。有没有办法拉动逗号分隔的参数,而不必将其粘贴到命令行中?或者,有没有办法将变量打包到for循环中,如果它们有句点(例如网页)?
如果我在命令行中添加单个网站和文件位置作为两个参数,那么这个似乎有效:Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
Dim BinaryStream
Set BinaryStream = CreateObject("ADODB.Stream")
BinaryStream.Type = adTypeBinary
BinaryStream.Open
BinaryStream.Write BinaryGetURL(Wscript.Arguments(0))
BinaryStream.SaveToFile Wscript.Arguments(1), adSaveCreateOverWrite
Function BinaryGetURL(URL)
Dim Http
Set Http = CreateObject("WinHttp.WinHttpRequest.5.1")
Http.Open "GET", URL, False
Http.Send
BinaryGetURL = Http.ResponseBody
End Function
当我尝试基于变量数组构建参数时,我无法使用此工具。似乎在“函数”失败时出现语法错误(变量中的句点):
myWebSite = split(commaseparateURLs,",")
myFileLocation = split (commaseparateFiles,",")
num_WebSite = UBound(myFileLocation)
for i = 0 to num_WebSite
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2
Dim BinaryStream
Set BinaryStream = CreateObject("ADODB.Stream")
BinaryStream.Type = adTypeBinary
BinaryStream.Open
BinaryStream.Write BinaryGetURL(myWebSite(i))
BinaryStream.SaveToFile myFileLocation(i), adSaveCreateOverWrite
Function BinaryGetURL(URL)
Dim Http
Set Http = CreateObject("WinHttp.WinHttpRequest.5.1")
Http.Open "GET", URL, False
Http.Send
BinaryGetURL = Http.ResponseBody
End Function
Next
对这一点的任何小推动都会有所帮助。谢谢!
答案 0 :(得分:0)
您在for循环中间有Function
的{{1}}定义。函数必须是文件的根,而不是其他代码。
我还通过在块中缩进代码并添加空格来格式化代码。这使得更清楚的是函数内部的代码以及for循环中的代码。
GetBinaryFile