コモノExtendScript100本ノック

超初心者のDTPオペレーターが週にひとつスクリプトを書くブログ

006.【ESTK】フォルダ名を一括変更

書いたコード

/* 
以下のようなテキストデータを作成する

C:/Users/ユーザー名/Desktop/01_中国/ [タブ] C:/Users/ユーザー名/Desktop/02_香港/
C:/Users/ユーザー名/Desktop/03_台湾/ [タブ] C:/Users/ユーザー名/Desktop/04_韓国/
 
* "/"は"\"でも可 
* パスの前後にダブルクオーテーションはつけない
*/

var myLog=[];
var txtObj = File("C:/Users/ユーザー名/Desktop").openDlg("txtを指定してください","*.txt");
if (txtObj==null) {
    alert("キャンセルしました");
    } else {
    txtObj.open("r");
    var txtStr = txtObj.read();
    var charChk = /[\*\?"<>\|]/g.test(txtStr);
    if(charChk){
        alert ("フォルダ名に使用できない文字が含まれています");
        } else {
    txtStr = txtStr.replace(/\\/g,/\//);
    var txtLines=txtStr.split(/\r\n|\r|\n/);
    var txtLinesCnt = txtLines.length;
    for (i=0; i<txtLinesCnt; i++){
        var txtBlocks = txtLines[i].split(/\t/);
        var formerName = txtBlocks[0];
        var latterName = txtBlocks[1];
        var folderRename = Folder(formerName).rename(latterName);
        if (folderRename==true) {
            myLog.push((i+1)+"行目の処理に成功しました")
            } else {
                 myLog.push((i+1)+"行目の処理に失敗しました")
                 }
        }
 alert("完了\n"+myLog.join("\n"));
   }
}

メモ

アラートについて

  • renameできたかどうかの分岐、try...catch と迷ったが if (folderRename==true) にした。renameできなかったときにエラーとみなされるのかどうか分からなかったので後者にしたのだけど、前者も試してみればよかった。
  • 「成功しました」は出さない方が「失敗しました」を見落とす危険が減るかも。