VBSによるファイルダウンローダーの実現
企業内のPCでは往々にして自由なソフトウェアのインストールが禁じられています。その結果、例えばダウンローダーが入れられないため、URLは分かっているファイルを一括ダウンロードする術が無いということがあります(手作業で右クリック⇒保存をしていると日が暮れる数のファイル)。そこで当ブログでは、Windows機であれば環境問わず実行可能なスクリプト(VBS)で簡易的なダウンローダーの作成を行いました。ファイルの大量ダウンロードとかいう新入社員にありがちな糞な仕事を任せられたら、これでちゃっちゃと終わらせてしまいましょう。
使い方
(1)以下のソースファイル(myDownloader.vbs)と同じ階層に、boxという名前のフォルダとmyDownloadList.txtを作成する。
(2)myDownloadList.txt内に、ダウンロードしたいファイルのURLを1行ごとに列挙する。
(3)myDownloader.vbs を実行。するとbox内にファイルがダウンロードされて溜まっていく。
やっつけで調べながら作ったので、ソースが汚いのはご容赦ください。
暇があれば関数化して見やすく改良します。誰かしてください。
myDownloader.vbs
Dim objFSO Dim objFile Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") If Err.Number = 0 Then Set objFile = objFSO.OpenTextFile("myDownloadList.txt") If Err.Number = 0 Then Do While objFile.AtEndOfStream <> True cReqURL = objFile.ReadLine Set objFileSystem = WScript.CreateObject("Scripting.FileSystemObject") Set objShell = WScript.CreateObject("WScript.Shell") Set objXmlHttp = WScript.CreateObject("MSXML2.XmlHttp") cFileName = objFileSystem.getFileName(cReqURL) cReqPath = objFileSystem.getParentFolderName(cReqURL) & "/" objXmlHttp.Open "GET", cReqPath & cFileName, False objXmlHttp.SetRequestHeader "Pragma", "no-cache" objXmlHttp.SetRequestHeader "Cache-Control", "no-cache" objXmlHttp.SetRequestHeader "If-Modified-Since", "Thu, 01 Jan 1970 00:00:00 GMT" objXmlHttp.Send intStatus = objXmlHttp.status If (intStatus <> 200) Then WScript.Echo "FAILED" & vbCrLf & vbCrLf & "HTTP status code is" & intStatus & vbCrLf & cFileName WScript.Quit End If Set objStream = WScript.CreateObject("ADODB.Stream") objStream.Open objStream.Type = 1 objStream.Write objXmlHttp.responseBody objStream.SaveToFile objShell.CurrentDirectory & "\box\" & cFileName, 2 objStream.Close Set objFileSystem = Nothing Set objStream = Nothing Set objXmlHttp = Nothing Loop objFile.Close Else WScript.Echo "File couldn't be opened: " & Err.Description End If Else WScript.Echo "Error: " & Err.Description End If Set objFile = Nothing Set objFSO = Nothing WScript.Echo "Successfully done." WScript.Quit