【要望】

  1. こんにちわ。

    要望なんですけども、
    Aのファイル内からBファイルにある文字列を検索し、
    一致した文字列をCのファイルに出力してくれるマクロまたはプラグインがほしいです。

    ご検討、よろしくお願いします。

    例)
    Aファイル内      Bファイル内      Cファイル内
    aaaa          aaaa          一致した文字列
    bbbb          ccccc         aaaa
    ccccc                      ccccc
    aaaa

     |  jyun  |  返信
  2. こんばんは。

    ふむふむ、って、またすごいマニアックな・・・w
    マクロでがんばりゃなんとかなりそうな気もするけど。。。

    Meryに標準で同梱されてる「このファイルから検索(マッチする行).js」を実行して、検索条件に
    Bファイルの内容を「|」で区切って入力する、ってのでどうですか?

    例「aaaa|cccc」

    Cファイルに出力されるわけではなく、Aファイルがそのまま書き換わっちゃいますけど、最初にAファイルの内容を
    別のテキストに書き出しておけば問題ないかと・・・。

     |  Kuro  |  返信
  3. > こんばんは。
    >
    > ふむふむ、って、またすごいマニアックな・・・w
    > マクロでがんばりゃなんとかなりそうな気もするけど。。。
    >
    > Meryに標準で同梱されてる「このファイルから検索(マッチする行).js」を実行して、検索条件に
    > Bファイルの内容を「|」で区切って入力する、ってのでどうですか?
    >
    > 例「aaaa|cccc」
    >
    > Cファイルに出力されるわけではなく、Aファイルがそのまま書き換わっちゃいますけど、最初にAファイルの内容を
    > 別のテキストに書き出しておけば問題ないかと・・・。

    ありがとうございます。

    応用なんですけど、
    検索項目を入力をしないでBファイルを呼び出し、
    Aファイル内を検索とかは出来ますか?

    検索項目が多くて・・・w

    マイアックですみません。。。w

     |  jyun  |  返信
  4. > 検索項目が多くて・・・w

    なるほど、、、ということは基本的な動作は上記のもので行けそうなんですね。
    検索項目が多いというのはBファイルの内容がたくさんあるので「|」区切りで記述するのが大変ってことでしょうかw

    マクロを作りこめばBファイルの内容で直接検索するようにもできると思いますが、ちょっとヨイショがいりますね。。。

    かなり手抜きな方法ですが、Bファイルを置換で検索文字列「\n」、置換文字列「|」で、正規表現を使用するに
    チェックいれて置換すると「|」区切りになるので、それをコピーペーストって感じでどうじゃろうか。。。

    いったいどういった作業をしようとされているのかが謎ですが、すごい頻繁に発生する作業であれば
    いい感じのマクロにしてあげたいところですw

     |  Kuro  |  返信
  5. windows2000以降では findstr コマンドが標準で入っています。
    上のA,B,Cのパターンなら、コマンドプロンプトで

    findstr /G:bファイル Aファイル>Cファイル

    とすれば、目的は達成できます。

    わざわざMeryのマクロにするとしたら、ファイルパスの指定を自動化するとか、コマンド実行後に Cファイルを編集状態にするとかでしょうか?
    以下のマクロは、Aファイルを編集中に実行する想定です。
    -------------------------------------------------------------------------------
    var Afile = document.FullName;
    var filePath = Afile.substr(0, Afile.lastIndexOf('\\') + 1) ;
    var Bfile = filePath + 'Bfile.txt';//ファイル名を固定値で指定
    var Cfile = filePath + 'Cfile.txt';// 同上
    if(Afile.indexOf(' ')>0)Afile = '"' + Afile + '"';
    if(Bfile.indexOf(' ')>0)Bfile = '"' + Bfile + '"';
    if(Cfile.indexOf(' ')>0)Cfile = '"' + Cfile + '"';
    var CommandString = 'cmd.exe /C findstr /G:' + Bfile + ' ' + Afile + '>' + Cfile;
    var WShell = new ActiveXObject("WScript.Shell");
    var oExec = WShell.Exec(CommandString);
    var i = 0;
    while(oExec.Status == 0) {
    if(!Sleep(10)){ // 現在のMeryではSleepは未実装
    i++;
    if( i>100000 )break; // 最近のCPUなら数値をもっと大きくしましょう
    }
    }
    editor.OpenFile(Cfile);
    -------------------------------------------------------------------------------
    現在の OpenFile コマンドは、編集中のAファイルを閉じて Cファイルを開くようになっています。Aファイルを開いたままで、Cファイルを開くには別の工夫が必要です。

     |  goat  |  返信
  6. >findstr /G:bファイル Aファイル>Cファイル

    findstr /G:Bファイル Aファイル>Cファイル
    です。大文字小文字に意味は無いかもしれませんが念のため。

     |  goat  |  返信
スポンサーリンク