0

私にはスクリプトの正式な経歴がないので、無知であることを前もってお詫びします。vbscriptを使用してインターネットからファイルの場所にcsvファイルをダウンロードする方法を見つけようとしています。Webを参照した後、URLと新しいファイルの場所/名前の引数を使用して、これを1つのケースで正常に実行できます。ただし、これをforループにまとめて何度も繰り返すようにしたいので、コマンドラインに引数を追加してもうまくいかないようです。変数にピリオドを含めることはできません。コマンドラインに貼り付けることなく、コンマ区切りの引数をプルする方法はありますか?または、変数にピリオドがある場合(Webページのように)、変数をforループにパッケージ化する方法はありますか?

これは、コマンドラインの2つの引数として単一のWebサイトとファイルの場所を追加した場合に機能するようです。

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    

これを少し少し動かすと役に立ちます。ありがとう!

4

1 に答える 1

0

for ループの途中でforのFunction定義があります。GetBinaryFile関数は、他のコード内ではなく、ファイルのルートである必要があります。

また、コードをブロック単位でインデントし、空白を追加して、コードをフォーマットしました。これらにより、どのコードが関数内にあり、どのコードが 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 
于 2012-12-17T04:48:15.957 に答える