FGREPの様なものが作りたいNo.05030
cel さん 06/01/30 22:45
 
秀丸マクロは記録マクロをいじった程度です。

GREPでキーワードを並べたファイルを用意しEOFまで、キーワードごとに GREP を行
い、キーワード毎に結果ファイルに保存するマクロを作りたいと思っています。以下
が作ってみたコードです。

<キーワードファイル>
検索キー1
検索キー2
 ・
 ・
 ・

-------------------------------------------
 // キーワードファイルのファイル名を取得
 
 $BASE_FILE = basename;
 #handle0 = hidemaruhandle( 0 );
// 検索フォルダ
 $IN_FOL = "C:\\TMP\\";
//  出力フォルダ
 $OT_FOL = "D:\\TMP\\";
// 対象拡張子
 $EXTENTION = "*.txt";
// Grep 開始
 while(code !=eof ){
  golinetop;
  beginsel;
  golineend;
  copy;
  beginclipboardread;
  $KEYW = getclipboard;
  if ( $KEYW == "" ){
    goto M999;
  }
 
  $OT_FILE = $OT_FOL + $KEYW + "の検索結果.txt";
  grep $KEYW,$EXTENTION,$IN_FOL,subdir, hilight;
  if ( result != 0 ){
   saveas $OT_FILE;
   #handle1 = hidemaruhandle( 0 );
  }else{
   $OT_FILE = "000_" + $KEYW + "は含まれない.txt";
   gofiletop;
   insert $OT_FILE;
   saveas $OT_FILE;
   #handle1 = hidemaruhandle( 0 );
  }
  setactivehidemaru #handle_g;
  closehidemaru #handle1;
  setactivehidemaru #handle_g;

M999:
  down;
 }
-------------------------------------------------------
1件目はうまく GREP するのですが、2件名以降は GREP結果の
2行目を次に GREP してしまいます。

GREP後そのウィンドを閉じたいのですが、書き方がまずいのかうまく閉じれず、アク
ティブなウィンドが検索結果になったままだと思うのですが、上手く処理する方法が
分かりません。
GREP結果を表示しているファイルは「無題」のようなので、ファイル名を付けて保存
はしているのですが、上手くいきません。
何か勘違いしているような気がします。
教えていただけないでしょうか?。
   

[ ]
RE:05030 FGREPの様なものが作りたいNo.05031
h-tom さん 06/01/30 23:38
 

h-tom です。

> #handle0 = hidemaruhandle( 0 );
で、キーワードファイルのハンドルを取得しているのに、

>  setactivehidemaru #handle_g;
>  closehidemaru #handle1;
>  setactivehidemaru #handle_g;
#handle0 を使わずに、#handle_g を使っているので、秀丸の切替に
失敗しているのでは?

>  beginsel;
>  golineend;
>  copy;
>  beginclipboardread;
>  $KEYW = getclipboard;
クリップボードを使わなくても、gettextで取得できますよ。
$KEYW = gettext(0,y,linelen2,y);

[ ]
RE:05031 FGREPの様なものが作りたいNo.05038
cel さん 06/02/02 19:02
 
>>  setactivehidemaru #handle_g;
>>  closehidemaru #handle1;
>>  setactivehidemaru #handle_g;
>#handle0 を使わずに、#handle_g を使っているので、秀丸の切替に
>失敗しているのでは?

あ、そうですね。ケアレスミスでした。
修正したら、動きました。。。

>
>>  beginsel;
>>  golineend;
>>  copy;
>>  beginclipboardread;
>>  $KEYW = getclipboard;
>クリップボードを使わなくても、gettextで取得できますよ。
>$KEYW = gettext(0,y,linelen2,y);

ご教授、ありがとうございます。


ありがとうございました。

[ ]