WSHでファイルリネームツールを作るよ

#WSHでファイルリネームツールを作るよ
以下の仕様

- Drag & Dropで、ファイル（複数可）をリネーム
- 基本文字列＋置換前ファイル名　にリネーム可
- 基本文字列＋４桁の連番　にリネーム可
- 基本文字列未指定時は、元ファイル名を置換のみ行う
- 置換条件に正規表現使用可

[:bangbang:] 注意：元ファイルを直接リネームする為、バックアップ推奨

<hr/>
#### 本体（FileRenamer.wsf）
```html
// UTF-16LEで保存すること.
<job>
  <script language="JavaScript" src="CommonUtil.js"></script>
  <script language="JavaScript" src="IeUtil.js"></script>
  <resource id="inputHtml">
    <![CDATA[
      <html>
      <head>
        <meta charset="utf-8"/>
        <style type="text/css">
        <!--
        body { font-family:'メイリオ',Meiryo; }
        ul { padding-left: 0px; list-style-type: none; }
        li[id="wrapper"] { text-align:center; }
        input[type="button"] {
          font-size: 1.4em; font-weight: bold; padding: 10px 30px;
          -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px;
         }
        -->
        </style>
      </head>
      <body>
        <form>
          <input type="hidden" id="CLICKED" value="false" />
          <ul>
            <li>リネーム条件入力（正規表現対応）</li>
            <br/>
            <li>基本文字列: <input type="text" id="baseStr" value="baseName" /></li>
            <li>※未指定時は、置換のみ行います。</li>
            <br/>
            <li>対象文字列: <input type="text" id="targetStr" /></li>
            <li>置換文字列: <input type="text" id="replaceStr" /></li>
            <br/>
            <li><input type="checkbox" id="allReplace" checked />該当文字列は全置換する</li>
            <li><input type="checkbox" id="sequence" />４桁の連番を付与する</li>
            <br/>
            <li id="wrapper">
              <input type="button" onClick="quit()" value="実行" />
            </li>
          </ul>
        </form>
        <script>
          document.body.style.overflow = "hidden";
          function quit(){
            document.getElementById( "CLICKED" ).value="true";
            window.open('','_self').close();
          }
        </script>
      </body>
      </html>
    ]]>
  </resource>
  <script language="JavaScript">
    // 引数チェック.
    if ( WScript.Arguments.length === 0 ){
      $.info( "ファイルをD&Dしてください.", "エラー" );
      WScript.Quit();
    }

    var displaySize = $.IE.getDisplaySize();
    var replaceInfo = $.IE.displayCustomWindow(
      displaySize.width, displaySize.height, 320, 380, getResource( "inputHtml" ), "置換条件入力"
    );

    // 実行.
    var reg = new RegExp( replaceInfo.targetStr, replaceInfo.allReplace ? 'g' : '' );
    var cnt = 1;
    $.mapX( WScript.Arguments, function( path ){
      var file = $.Fso.getFile( path );
      var ext = $.Fso.getExtensionName( path );
      if ( replaceInfo.sequence ){
        file.Name = replaceInfo.baseStr + $.getZeroPadding( cnt, 4 ) + "." + ext;
        cnt++;
      } else {
        var baseStr = replaceInfo.baseStr ? replaceInfo.baseStr : "";
        var replaceStr = file.Name.replace( reg, replaceInfo.replaceStr );
        var resultStr = baseStr + replaceStr;
        if ( resultStr && resultStr != file.Name ) file.Name = resultStr;
      }
    });

    // 終了.
    $.info( "done.", "end" );
    WScript.Quit();
  </script>
</job>
```
<br/>
#### 共通FW（CommonUtil.js）
[こちら](https://qiita.com/fujisystem/items/d0a347707eea116141a9#%E5%85%B1%E9%80%9Afwcommonutiljs)

<br/>
#### Excel用FWっぽいの（XlsxUtil.js）
[こちら](https://qiita.com/fujisystem/items/d0a347707eea116141a9#excel%E7%94%A8fw%E3%81%A3%E3%81%BD%E3%81%84%E3%81%AExlsxutiljs)


## 総括・ハマりポイント
- 特に嵌りなし
- htmlに凝るとソースの大半がhtmlだらけになる印象。なんとかならないか
- ~~D&Dだと順序保障できない~~<br/>
  ⇒~~Enumeratorを使ったfor文が順序保障しない模様。standardなfor文に変更。~~<br/>
　⇒勘違い。順序は下記の法則で行われていることがわかった。
<pre>
□file1
□file2
■file3
□file4
□file5
file3にマウスを置いてD&Dすると、
file3 ⇒ file4 ⇒ file5 ⇒ file1 ⇒ file2
の順で、WScript.Argumentsに引き渡される様子。
file1 ⇒・・・⇒ file5で処理したい場合は、file1にマウスを置いて、D&DすればOK。
</pre>