Irvine の スクリプト

※ 使用するには、ツール>オプション設定>スクリプト>新規作成 のスクリプト作成ウィザードで適当に


保存名の数字部分の桁そろえ (listmakesamefigures)

OnListMenuClick 用

// 2006.06.19 dokas_mg

function OnListMenuClick(irvine, action) {
  var item = new IrvineItem;
  var maxfig = 0;
  for (var i = irvine.ItemCount - 1; i >= 0; --i) {
    var fname, fig;
    if (irvine.GetItemSelected(i)) {
      item.data = irvine.GetItemData(i);
      if (item.filename == '')
        fname = item.url.slice(item.url.lastIndexOf('/') + 1, item.url.length);
      else fname = item.filename;
      fig = LastFiguresCount(fname.substring(0, fname.lastIndexOf('.')));
      if (maxfig < fig) maxfig = fig;
    }
  }
  if ((maxfig < 1) || (maxfig > 8)) {
    alert('最大桁数が 1 から 8 の場合以外は非対応です');
    return;
  }
  if (!confirm('最大桁数の ' + maxfig.toString() + ' にあわせます')) return;

  irvine.BeginProgressBar(irvine.SelectedItemCount);
  try {
    var zero = '00000000';
    for (var i = irvine.ItemCount - 1; i >= 0; --i) {
      if (irvine.GetItemSelected(i)) {
        var fname;
        item.data = irvine.GetItemData(i);
        if (item.filename == '')
          fname = item.url.slice(item.url.lastIndexOf('/') + 1, item.url.length);
        else fname = item.filename;
        var idx = fname.lastIndexOf('.');
        var noext = fname.substring(0, idx);
        var ext = fname.substring(idx, fname.length);
        var fig = LastFiguresCount(noext);
        if (fig > 0) {
          var figdiff = maxfig - fig;
          if (figdiff > 0) {
            var figidx = noext.length - fig;
            item.filename = noext.substring(0, figidx)
              + zero.substring(0, figdiff)
              + noext.substring(figidx, noext.length)
              + ext;
            irvine.SetItemData(i, item.data);
          }
        }
        irvine.ProgressBarStepBy(1);
      }
    }
  } finally {
    irvine.EndProgressBar();
    irvine.Invalidate();
  }
}

function OnMenuUpdate(irvine, action) {
  action.enabled = (irvine.SelectedItemCount > 0);
}

function LastFiguresCount(str) {
  var fig = 0;
  if (str != null) {
    var digits = '0123456789';
    for (var i = str.length - 1; i >= 0; --i) {
      if (digits.indexOf(str.substr(i, 1)) < 0) break;
      fig++;
    }
  }
  return fig;
}

保存名の拡張子の小文字化 (listreplaceextensionlower)

OnListMenuClick 用

// 2006.07.13 dokas_mg

function OnListMenuClick(irvine, action) {
  var item = new IrvineItem;
  irvine.BeginProgressBar(irvine.SelectedItemCount);
  try {
    for (var i = irvine.ItemCount - 1; i >= 0; --i) {
      if (irvine.GetItemSelected(i)){
        item.data = irvine.GetItemData(i);
        var fname;
        if (item.filename == '') {
          var u = item.url;
          fname = u.slice(u.lastIndexOf('/') + 1, u.length);
        } else fname = item.filename;
        var idx = fname.lastIndexOf('.');
        if (idx > -1) {
          var newfname = fname.substring(0, idx) + fname.substring(idx, fname.length).toLowerCase();
          if (newfname != fname) {
            item.filename = newfname;
            irvine.SetItemData(i, item.data);
          }
        }
        irvine.ProgressBarStepBy(1);
      }
    }
  } finally {
    irvine.EndProgressBar();
    irvine.Invalidate();
  }
}

function OnMenuUpdate(irvine, action) {
  action.enabled = (irvine.SelectedItemCount > 0);
}