2013年5月5日日曜日

MakeComment.jsを書き直す

このブログのコメントで、Windows7だとMakeComment.jsで.txt拡張子の一行目を取得できないという報告をいただいたので書き直してみた。
ちなみにMakeComment.jsはMoEで使用する、一行目とファイルパスを対応させたコメントファイルを作成するPPxスクリプトです。

MakeComment.js
//!*script
//カレントディレクトリに一行目とファイルパスを対応させたコメントファイル(00_INDEX.txt)を作成

var strLine = "\n";
var currentDir = PPx.Extract('%1');

for (var i = 0; i < PPx.EntryAllCount; i++) {
  // サイズが0のファイルとディレクトリは読み込まない
  if (PPx.Entry(i).Size == 0) {
  }
  // 拡張子がtxtとhowmのファイルを読み込む
  else if (PPx.Entry(i).Name.match(/.txt$|.howm$/i)) {
    var entryName = PPx.Entry(i).Name;
    var objItem = currentDir + "\\" + entryName;
    var objFileSys = new ActiveXObject("Scripting.FileSystemObject");
    // ファイルの内容を取得
    objInFile = objFileSys.OpenTextFile(objItem, 1);
    // ファイル名+Tab+一行目の最初二文字~100字を切り取ったもの+改行をstrに代入
    str = entryName + "\t" + objInFile.ReadLine().slice( 2,100 ) + "\n";
    strLine =  strLine + str;
    objInFile.Close();
  }
}

// カレントディレクトリに00_INDEX.txtを作成
strCreateFile = objFileSys.BuildPath(currentDir,"00_INDEX.txt");
objFileSys.CreateTextFile(strCreateFile);

// 00_INDEX.txtに書き込み
objOutFile = objFileSys.OpenTextFile(strCreateFile, 2);
objOutFile.Write(strLine);
objOutFile.Close();
// F5で更新
PPx.Execute("%K\"@[F5]\"")

Windows7で実際に動くか試したからこれでいけるはず。 だめなら連絡ください。
一行が長いときのため、100字の文字数制限を追加してみました。あとtxtやhowmが大文字(TXTやHOWM)になってたら読み込まなかったみたいなのでそれも直しておいた。たぶんこっちのほうが処理早いので今まで問題なく使えてたひとも差し替えたほうがいいかもです。
けど以前のコードでVistaまでは問題なかったのに、7からは.txtファイルを読み取らなくなるってどういう理屈なんだろう。私、気になります!

1 件のコメント:

  1. 修正ありがとうございます。
    無事Windows7でも、*.howmと*.txtの一行目を抽出できました。

    返信削除