AOK's JavaScript Sample
IE6.0 (Win2000/XP) で動作確認しています。
Last Update: Nov.14,2006

ファイル名の付け替えツール(HTML Application)
<html>
<head>
<title>ファイル名の付け替えツール - Copyright (c) 2005, 2006 AOK.</title>
<hta:application
  applicationName="Rename Tool"
  border="dialog"
  contextMenu="no"
  innerBorder="no"
  maximizeButton="no"
  minimizeButton="no"
  scroll="no" />

<style type="text/css"><!--
body, td { font-size:10pt; }
--></style>

<script language="JScript">
<!--
/*  ren.hta : ファイル名付け替えツール
 *
 *      2006/11/14  若干修正
 */

/* 特殊フォルダの取得 */
function GetSpecialFolders(s) {
  var ws = new ActiveXObject("WScript.Shell");
  return ws.SpecialFolders(s);
}

/* フォルダ参照ダイアログを使う */
function ShellBrowseForFolder(message) {
  var objShell = new ActiveXObject("Shell.Application");
  var objFolder = objShell.BrowseForFolder(0, message, 0x241);
  if (objFolder != null) {
    var objFolderItems;
    objFolderItems = objFolder.Items();
    if (objFolderItems != null) {
      var objFolderItem;
      objFolderItem = objFolderItems.Item();
      if (objFolderItem != null) {
        var ret = objFolderItem.Path + "\\";
        return ret.replace(/\\\\$/, "\\");
      }
    }
    return GetSpecialFolders("Desktop");
  }
  return null;
}

/* 全角英数字を半角英数字に置換する */
function z2h_word(src) {
  return src.replace(/([A-Za-z0-9_])/g,
    function ($0) {
      return String.fromCharCode($0.charCodeAt(0) - 65248);
    });
}

function ShowFolderFileList(folderspec) {
  var fso, f, fc;
  fso = new ActiveXObject("Scripting.FileSystemObject");
  try {
    f = fso.GetFolder(folderspec);
  } catch(e) {
    window.alert(e.message);
    return;
  }
  fc = new Enumerator(f.files);
  while (document.F1.D1.options.length > 0)
    document.F1.D1.options.remove(0);
  for (; !fc.atEnd(); fc.moveNext()) {
    var oOption = document.createElement("OPTION"); 
    document.F1.D1.options.add(oOption);
    oOption.innerText = fc.item();
  }
  var len = document.F1.D1.options.length;
  document.F1.D1.size = (len > 20 ? len : 20);
}

function select_folder() {
  var folder = ShellBrowseForFolder("フォルダを選択して下さい。");
  if (folder != null) {
    document.F1.T1.value = folder;
    ShowFolderFileList(folder); 
  } else {
    window.alert("キャンセルされました。");
  }
}

function run_rename() {
  var fso, f, s, d, t, t2, t3, len;
  len = document.F1.D1.options.length;
  if (len < 1) return;
  if (!document.F1.C2.checked && !document.F1.C1.checked) return;
  t2 = document.F1.T2.value;
  t3 = document.F1.T3.value;  
  fso = new ActiveXObject("Scripting.FileSystemObject");
  for (i = 0; i < len; i++) {
    s = document.F1.D1.options.item(i).innerText;
    f = fso.GetFile(s);
    d = f.Name;
    if (document.F1.C2.checked) {
      t = d;
      if (t2 != "") {
        if (document.F1.C3.checked) {
          var reg = new RegExp(t2);
          d = t.replace(reg, t3);
        } else
          d = t.replace(t2, t3);
      } else
        d = t;
    } 
    if (document.F1.C1.checked) {
      t = d;
      d = z2h_word(t);
    }
    if (d != f.Name) {
      t = f.ParentFolder + "\\" + d;
      f.Move(t);
      if (!fso.FileExists(s)) {
        document.F1.D1.options.item(i).innerText = t;
      }
    }
  }
  window.alert("付け替えを終了しました。");
}
//-->
</script>
</head>
<body bgcolor="#C0C0C0" text="#000000" topmargin="5" leftmargin="6" 
onload="window.resizeTo(600,411)">
<form name="F1">
<table border="0" cellpadding="4" cellspacing="0">
<tr>
<td>対象フォルダ:<input type="text" size="86" name="T1">
<input type="button" value="選択" onclick="select_folder()"></td>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2" style="padding-left:4px">ファイル:</td></td>
</tr>
</table>
<table border="0" cellpadding="3" cellspacing="0" width="588">
<tr>
<td valign="top" rowspan="2" width="330"><div
style="width:330px;height:306px;overflow:scroll;border:groove 2px"><select
name="D1" size="20"></select></div></td>
<td valign="top" width="238"><table cellpadding="4"
cellspacing="1" style="border:groove 2px">
<tr>
<td><input type="checkbox" name="C2"> 特定の文字列を指定文字列に置換<br>
 検索文字列:<input type="text" size="20" name="T2"><br>
   <input type="checkbox" name="C3"> 正規表現を使用<br>
 置換文字列:<input type="text" size="20" name="T3">
<p><input type="checkbox" name="C1"> 全角英数字を半角にする</p>
</td>
</tr>
</table>
<p>【使い方】<br>
選択ボタンを押して、フォルダを選択すると、<br>
左側にファイルのリストが、表示されます。<br>
付け替え方法を右側で選択してから、実行<br>
して下さい。</p>
</td>
</tr>
<tr>
<td align="center" valign="bottom"><input type="button"
value="実行" style="width:100px" onclick="run_rename()">
<input type="button" value="終了" onclick="window.close()"
style="width:100px"></td>
</tr>
</table>
<table border="0" width="588" cellpadding="4" cellspacing="0">
<tr>
<td colspan="2" align="center">Copyright (c) 2005, 2006 AOK.
All Rights Reserved.
<a href="http://aokura.com/" target="_blank">http://aokura.com/</a></td>
</tr>
</table></form>
</body>
</html>

戻る Copyright (c) 2006 AOK. All Rights Reserved.