過去ログ

                                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();

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 23