首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vbscript在带句点的变量中循环的问题有什么诀窍?

vbscript在带句点的变量中循环的问题有什么诀窍?
EN

Stack Overflow用户
提问于 2012-12-17 12:39:23
回答 1查看 404关注 0票数 0

我在脚本方面没有正式的背景,所以我为我的无知道歉。我正在尝试找到一种方法从互联网下载csv文件到一个文件位置使用vbscript。在引用web之后,我可以使用URL和新文件位置/名称的参数在一种情况下成功地做到这一点。但是,我想将这段代码串到一个for循环中重复多次,因此向命令行添加参数似乎不起作用。我意识到变量不能有句点。有没有一种方法可以拉出逗号分隔的参数,而不必将其粘贴到命令行中?或者,如果变量有句点(比如网页),有没有办法将它们打包到for循环中?

如果我在命令行中添加一个单独的网站和文件位置作为两个参数,这个方法似乎可以工作:

代码语言:javascript
复制
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

当我尝试基于变量数组构建参数时,我不能让它工作。似乎在出现语法错误(变量中的句点)的"function“时失败:

代码语言:javascript
复制
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    

在这一点上的任何一点推动都会有所帮助。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-17 12:48:16

在for循环中间有GetBinaryFileFunction定义。函数必须是文件的根,而不是在其他代码中。

我还通过在块中缩进代码并添加空格来格式化代码。这使得函数中包含哪些代码以及for循环中包含哪些代码变得更加清晰。

代码语言:javascript
复制
Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2

myWebSite = split(commaseparateURLs,",")
myFileLocation = split (commaseparateFiles,",")
num_WebSite = UBound(myFileLocation)

for i = 0 to num_WebSite
    Dim BinaryStream
    Set BinaryStream = CreateObject("ADODB.Stream")
    BinaryStream.Type = adTypeBinary
    BinaryStream.Open
    BinaryStream.Write BinaryGetURL(myWebSite(i))
    BinaryStream.SaveToFile myFileLocation(i), adSaveCreateOverWrite
Next

Function BinaryGetURL(URL)
    Dim Http
    Set Http = CreateObject("WinHttp.WinHttpRequest.5.1")
    Http.Open "GET", URL, False
    Http.Send
    BinaryGetURL = Http.ResponseBody
End Function 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13908334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档