バッチ処理に使うのであれば cscript httpget.js "URL" cscript httpget.vbs "URL" 対話で、エラー時にメッセージボックスが出ても良い場合は httpget "URL" ※ URL だけを指定すると、URL の最後をファイル名としてカレントにダウンロード ※ URL の後にパスを指定するとそこへダウンロードです ( httpget "URL" "保存ファイル名のパス" )
JScript : httpget.js
// **************************** // 初期処理 // **************************** if ( WScript.Arguments.length == 0 ) { WScript.Echo( "httpget url [savepath]" ); WScript.Quit(); } // **************************** // ダウンロード用のオブジェクト // **************************** var http = new ActiveXObject("Msxml2.ServerXMLHTTP") // **************************** // 第1引数は URL // **************************** var file; var url = WScript.Arguments(0); if ( WScript.Arguments.length == 1 ) { // 第2引数が無い場合は、URL の最後の部分 // ( カレントにダウンロード ) var aData = url.split("/"); file = aData[aData.length-1]; } else { // 第2引数がある場合はそれをローカルファイルとする file = Wscript.Arguments(1); } // **************************** // ダウンロード要求 // **************************** WScript.Echo( url ); http.open("GET", url, false ); http.send(); try { } catch (error) { WScript.Echo( error.description ); WScript.Quit(); } if ( http.status == 404 ) { WScript.Echo( "URL が正しくありません(404)" ); WScript.Quit(); } // **************************** // バイナリデータ保存用オブジェクト // **************************** var stream = new ActiveXObject("ADODB.Stream"); stream.Open(); stream.Type = 1 // バイナリ // 戻されたバイナリをファイルとしてストリームに書き込み stream.Write( http.responseBody ); // ファイルとして保存 stream.SaveToFile( file, 2 ); stream.Close // **************************** // ファイルの最後 // ****************************
VBScript : httpget.vbs
if Wscript.Arguments.Count = 0 then Wscript.Echo "httpget url [savepath]" Wscript.Quit end if ' ***************************** ' ダウンロード用のオブジェクト ' ***************************** Set objSrvHTTP = Wscript.CreateObject("Msxml2.ServerXMLHTTP") ' ***************************** ' 第1引数は URL ' ***************************** strUrl = Wscript.Arguments(0) if Wscript.Arguments.Count = 1 then ' 第2引数が無い場合は、URL の最後の部分 ' ( カレントにダウンロード ) aData = Split(strUrl,"/") strFile = aData(Ubound(aData)) else ' 第2引数がある場合はそれをローカルファイルとする strFile = Wscript.Arguments(1) end if ' ***************************** ' ダウンロード要求 ' ***************************** on error resume next Call objSrvHTTP.Open("GET", strUrl, False ) if Err.Number <> 0 then Wscript.Echo Err.Description Wscript.Quit end if objSrvHTTP.Send if Err.Number <> 0 then ' おそらくサーバーの指定が間違っている Wscript.Echo Err.Description Wscript.Quit end if on error goto 0 if objSrvHTTP.status = 404 then Wscript.Echo "URL が正しくありません(404)" Wscript.Quit end if ' ***************************** ' バイナリデータ保存用オブジェクト ' ***************************** Set Stream = Wscript.CreateObject("ADODB.Stream") Stream.Open Stream.Type = 1 ' バイナリ ' 戻されたバイナリをファイルとしてストリームに書き込み Stream.Write objSrvHTTP.responseBody ' ファイルとして保存 Stream.SaveToFile strFile, 2 Stream.Close
|