◀マクロトップへ
  • 413 サクラ上でファイル名検索
  • [413] サクラ上でファイル名検索 石鹸 2008年03月16日 12:33

    JScriptの勉強で作ってみました。
    -------------------------------------------ここから
    // サクラ上でファイル名検索
    // FileFind.js
    //
    // カーソル位置の単語、又は選択中の文字のファイル名を検索します。
    // 検索パスは予め指定されたフォルダ以下のファイルを全て検索します。
    // 結果はアウトプットウィンドウで表示します。

    // 検索パス名の \ は \\ か / で記述
    var g_SerchPath = new Array();
    g_SerchPath[0] = "D:/Subversion/MyProject/trunk/Src";
    g_SerchPath[1] = "C:/Program Files/Microsoft Visual Studio 8/VC/include";
    g_SerchPath[2] = "C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include";
    g_SerchPath[3] = "";
    g_SerchPath[4] = "";
    // 隠しフォルダは検索しない設定 ( 0 で隠しフォルダも検索)
    var g_NotFindHiddenFolder = 1;

    FileFindMain();
    g_SerchPath = null;

    function FileFindMain()
    {
    // 選択中の単語、又は、カーソル位置の単語を取得
    var word = Editor.GetSelectedString(0);
    if (!word) {
    Editor.SelectWord(0);
    word = Editor.GetSelectedString(0);
    }

    Editor.TraceOut("検索条件:" + word);
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    for (var i = 0; i < g_SerchPath.length; i++) {
    FileFindDir(g_SerchPath[i], word, fso);
    }
    fso = null;
    Editor.TraceOut( "" );
    }

    function FileFindDir(curDir, word, fso)
    {
    if (word == "") {
    return;
    }
    // 存在しないフォルダは戻る
    if (!fso.FolderExists(curDir)) {
    return;
    }
    // 隠しフォルダは戻る
    if (g_NotFindHiddenFolder != 0) {
    if (fso.GetFolder(curDir).Attributes & 0x02) {
    return;
    }
    }

    // サブフォルダを列挙して、再帰的に処理
    var subDirs = new Enumerator(fso.GetFolder(curDir).SubFolders);
    for (; !subDirs.atEnd(); subDirs.moveNext()) {
    FileFindDir(subDirs.item(), word, fso);
    }
    subDirs = null;
    // 検索
    var reg = new RegExp(word, "ig");
    reg.compile(word, "ig");
    // ファイル名を列挙して、マッチしたファイル名を出力
    var files = new Enumerator(fso.GetFolder(curDir).Files);
    for (; !files.atEnd(); files.moveNext()) {
    if (null != reg.exec(files.item().Name)) {
    Editor.TraceOut(curDir + "\\" + files.item().Name);
    }
    }
    files = null;
    reg = null;
    }
    -------------------------------------------ここまで