我在脚本方面没有正式的背景,所以我为我的无知道歉。我正在尝试找到一种方法从互联网下载csv文件到一个文件位置使用vbscript。在引用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当我尝试基于变量数组构建参数时,我不能让它工作。似乎在出现语法错误(变量中的句点)的"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 在这一点上的任何一点推动都会有所帮助。谢谢!
发布于 2012-12-17 12:48:16
在for循环中间有GetBinaryFile的Function定义。函数必须是文件的根,而不是在其他代码中。
我还通过在块中缩进代码并添加空格来格式化代码。这使得函数中包含哪些代码以及for循环中包含哪些代码变得更加清晰。
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 https://stackoverflow.com/questions/13908334
复制相似问题