ファイルの拡張子を調べるコマンドNo.00456
プックン さん 99/03/11 16:57
 
ファイルの拡張子

現在開いているファイルの拡張子を調べるマクロコマンドというのはあるのでしょ
うか?。
秀丸自体は、
その他(O) ファイルタイプ別の設定(C)を見ていると拡張子を判断しているような
ので、マクロで簡単に判断できるのかなと推測しているのですが、どうなんでしょ
うか?。

よろしくおねがいします。

[ ]
RE:00456 ファイルの拡張子を調べるコマンNo.00458
番頭++ さん 99/03/11 17:16
 
>ファイルの拡張子

こんな感じですか ???

$wk1 = filename2;
//$wk1 = "..a..b..t";
call pk_get_filetype2 $wk1;
$wk2 = $$return;
message $wk1 + "\n" + $wk2;
endmacro;

//*6MICROpk_get_filetype2
//*6_Desc.ファイル名の「拡張子」部分を得るVer. 02.02
//*6call pk_get_filetype2 arg_t1;//basename;
//*6arg_t1 : file name//$$1
//*6$$return : file type (拡張子) - .ttt
//*6global area : N/A
//*6if( $$return != "" ){
//*6message "basename - " + basename + "\n file type - " + $$return;
//*6} else {
//*6message "basename - " + basename + "\n file type - " + "N/A";
//*6}
//*6"aaa.bbb.nnn.ttt" というファイル名の拡張子にも対応しています !
endmacroall;
pk_get_filetype2:
$$wk1 = $$1;$$wk2 = "";
while( $$wk1 != "" ){
##i = strstr($$wk1,".");
if( ##i != -1 ){
##j = strlen($$wk1);
$$wk2 = midstr($$wk1,##i,##j);
$$wk1 = midstr($$wk1,##i+1,##j);
} else {
$$wk1 = "";
}
}
if( $$wk2 == "." ){$$wk2 = "";}
//Tmessage $$1 + "\n'" + $$wk2 + "'";
return $$wk2;
//*6MICRO_END


マクロのテストです。

call pk_get_filetype2 "";
call pk_get_filetype2 "abc";
call pk_get_filetype2 "a.b";
call pk_get_filetype2 "a.b.c";
call pk_get_filetype2 ".a.b..c..d";
call pk_get_filetype2 ".abc";
call pk_get_filetype2 "..abc";
call pk_get_filetype2 "ab.c.";
call pk_get_filetype2 "ab.c..";
endmacro;

[ ]
RE:00456 ファイルの拡張子を調べるコマNo.00459
ひろ さん 99/03/11 17:28
 
 プックンさん今日は、ひろです。
> 現在開いているファイルの拡張子を調べるマクロコマンドというのはあるのでしょ
 command はありませんが、関数の組み合わせでその様な機能を持つ
subroutine を作ることはできます。以下に sample を示します。
//----------- sample.mac --------------------------------------------
main:
  call get_extension basename2;
  //引数に basename 等の file name を渡すと $$return で拡張子を取得
  message $$return;
  endmacro;

get_extension://拡張子を取得する
//引数に basename or basename2 等の file name を示す文字列をもらう。
  ##extension=strstr($$1,".");
  if(##extension==-1){
    message "拡張子がありません";
    endmacro;
  }if(##extension==0){
    message "ドットファイルです";
    endmacro;
  }while(1){
    ##extension=strlen($$1)-##extension-1;
    $$1=rightstr($$1,##extension);
    ##extension=strstr($$1,".");
    if(##extension==-1)break;
  }return $$1;
//----------------------------------------------------------------------

[ ]
RE:00459 ファイルの拡張子を調べるコマNo.00460
プックン さん 99/03/12 09:57
 
番頭++さん、ひろさん、こんにちは。

早速の回答ありがとうございます。
ファイル名を取得してきて、.ピリオドの位置を検索して、その位置から
拡張子を調べる。うーん、すばらしいです。
まさしく、わたしがほしかったマクロです。ご指導ありがとうございました。
さっそく、私のマクロに使わせていただきます。m(__)mペコ

秀丸の機能は、奥が深いですね。


[ ]