Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Url vbscript在循环变量和句点时遇到问题有什么诀窍?_Url_Vbscript - Fatal编程技术网

Url vbscript在循环变量和句点时遇到问题有什么诀窍?

Url vbscript在循环变量和句点时遇到问题有什么诀窍?,url,vbscript,Url,Vbscript,我没有脚本方面的正式背景,因此我为自己的无知向您道歉。我正试图找到一种方法,使用vbscript将csv文件从internet下载到文件位置。在引用web之后,我能够在一种情况下使用URL和新文件位置/名称的参数成功地做到这一点。然而,我想把这些串成一个for循环来重复多次,所以在命令行中添加参数似乎不起作用。我意识到变量不能有周期。有没有办法将逗号分隔的参数粘贴到命令行中?或者,如果变量有句点(比如web页面),是否有方法将其打包到for循环中 如果我在命令行中添加一个网站和文件位置作为两个参

我没有脚本方面的正式背景,因此我为自己的无知向您道歉。我正试图找到一种方法,使用vbscript将csv文件从internet下载到文件位置。在引用web之后,我能够在一种情况下使用URL和新文件位置/名称的参数成功地做到这一点。然而,我想把这些串成一个for循环来重复多次,所以在命令行中添加参数似乎不起作用。我意识到变量不能有周期。有没有办法将逗号分隔的参数粘贴到命令行中?或者,如果变量有句点(比如web页面),是否有方法将其打包到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
当我试图构建基于变量数组的参数时,我无法让这个工作。似乎在“函数”出现语法错误时失败(变量中的句点):


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

> P>在for循环的中间有<代码>函数<代码>定义为<代码> GETBIALIORIVE文件< /代码>。函数必须是文件的根,而不是在其他代码中

我还通过在块中缩进代码并添加空白来格式化代码。这使得函数中的代码和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 

哇,这真是太快了,让我克服了这个问题。谢谢@MikeBb-然后请勾选答案上的复选框以接受正确答案。
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