JScript を用いてインターネットのファイルをダウンロードする

またまた JScript ネタです。
今回は、JScript を用いてインターネット上のファイルをダウンロードするスクリプトを作ってみます。

いきなりコードですが、下のようになりました。

// FileName: download.js

var args = WScript.Arguments;

if (args.Length <= 1) {
	var emsg = "Usage: cscript download.js ダウンロード対象のURL ダウンロード先フォルダ";
	WScript.Echo(emsg);
	WScript.Quit(1);
}

var fso = new ActiveXObject("Scripting.FileSystemObject");
var url = args(0);
var fname = fso.GetAbsolutePathName(args(1)) + "\\" + fso.GetFileName(url);

try {
	download(url, fname);
} catch(e) {
	var en = e.number & 0xFFFF;
	WScript.Echo("Error: " + e.description + "(" + en + ") ");
	WScript.Quit(en);
}
WScript.Quit(0);

function download(url, fname) {
	var http = newHttpObject();
	http.open("GET", url, false);
	http.send();
	if (http.status != 200) {
		var err = (http.status == 0)? 1 : http.status;
		throw new Error(err, http.statusText);
	}
	
	var file = new ActiveXObject("ADODB.Stream");
	file.Type = 1;
	file.Open();
	try {
		file.Write(http.responseBody);
		file.SaveToFile(fname, 2);
	} catch(e) {
		throw e;
	} finally {
		file.Close();
	}
	
	file = null;
	http = null;
	
	return;
}

function newHttpObject() {
	var http;
	try {
		http = new ActiveXObject("Msxml2.ServerXMLHTTP.6.0");
	} catch(e) {
		try {
			http = new ActiveXObject("Msxml2.ServerXMLHTTP");
		} catch(e) {
			try {
				http = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				throw e;
			}
		}
	}
	return http;
}


使い方ですが、コマンドプロンプトで下記のように指定して実行してください。

cscript download.js ダウンロード対象のURL ダウンロード先フォルダ


例です。下記を実行すると logo-ns-131205.png が C:\Temp 配下に保存されます。

cscript download.js http://k.yimg.jp/images/top/sp2/cmn/logo-ns-131205.png C:\Temp