Page 23 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼連番URLを展開して開く(js) YAma(作成sim氏) 02/8/2(金) 10:26 ─────────────────────────────────────── ■題名 : 連番URLを展開して開く(js) ■名前 : YAma(作成sim氏) ■日付 : 02/8/2(金) 10:26 -------------------------------------------------------------------------
//連番URLを展開して開く //正規表現バージョン //Iria用の連番URL //http://hoge.com/foo/bar[000-111].jpg //を展開して開くようなスクリプト //[]の組が複数あっても、最後の[]の中身を展開する //getListNumberArray //展開された番号を配列にして返す //startとendの桁数が合わない場合はnullを返す。 function getListNumberArray(start, end){ if ((start == null || end == null) || (start.length != end.length)){ //null、または桁数が合わない return null; } var s = new Number(start); var e = new Number(end); if (s >= e) { //start > endなら入れ替える var t = s; s = e; e = t; } var digit = start.length; var array = new Array(); for (var i = 0; i <= (e- s); i++){ var str = (s + i).toString(); //桁数固定してswitchなほうがいいのかな while (str.length < digit) str = "0" + str; array[i] = str; } return array; } //メイン関数 function main() { var bugweb = new ActiveXObject("BugWeb.BugBrowserAPI"); var liststr; var start_num; var end_num; var url_prefix; var url_suffix; var liststr_array = new Array(); var num_array = new Array(); if (bugweb == null){ WScript.Echo("BugBrowserオブジェクトを取得できませんでした。"); WScript.Quit(); } //about:blankにNavigateしたIEオブジェクトからクリップボードの内容を取得 //インターネットオプションのセキュリティから、「スクリプトによる貼り付け処理の許可」を有効にする必要がある var ie = new ActiveXObject("InternetExplorer.Application"); ie.Navigate("about:blank"); while (ie.Busy == true) WScript.Sleep(100); try { liststr = ie.document.parentWindow.clipboardData.getData("text"); } catch (e) { bugweb.ShowMessage("クリップボードからデータの取得に失敗しました。\n" + e); liststr = null; } finally { ie.Quit(); ie = null; } if ((liststr == null) || (liststr.length == 0)) { bugweb.ShowMessage("クリップボードのデータが文字列ではないか、長さ0の文字列です。"); bugweb = null; WScript.Quit(); } //展開する括弧を取得 var re = /\[([0-9]+)-([0-9]+)\]/g; var tmp_array = new Array(); do { liststr_array = tmp_array; } while ((tmp_array = re.exec(liststr)) != null) tmp_array = null; if ((liststr_array == null) || (liststr_array.length == 0)) { bugweb.ShowMessage("扱えない書式のURLリストです。"); bugweb = null; WScript.Quit(); } start_num = RegExp.$1; end_num = RegExp.$2; if ((start_num == null) || (end_num == null)) { bugweb.ShowMessage("数値で指定されたURLリスト以外は展開できません。"); bugweb = null; WScript.Quit(); } num_array = getListNumberArray(start_num, end_num); if (num_array == null || num_array.length == 0) { bugweb.ShowMessage("リストを展開できません。"); bugweb = null; WScript.Quit(); } url_prefix = liststr.substring(0, liststr_array.index); url_suffix = liststr.substring((liststr_array.lastIndex) , (liststr.length)); for (var i in num_array) { bugweb.NavigateNew(url_prefix + num_array[i] + url_suffix); } bugweb = null; } //メイン関数を実行 main(); |