//--------------------------------------------------------------------------- // DELFILEEXT : ファイル名から拡張子を除くルーチン // [Usage] : // call DELFILEEXT $$file; // $$node = $$return; // // $$file : ファイル名 // $$node : 拡張子を除いたファイル名(最後のピリオドは含まない) // // 備考: ファイル(ベース)名の最後にあるピリオド以降の文字列を // 拡張子とみなします。 // 但しファイル名にピリオドがない時はファイル名をそのまま、 // 先頭にのみピリオドがある場合は(もしあれば)フォルダ名のみ // を返します。 // (後者の場合もファイル名を返したい時はコード中のコメントを参照) // //--------------------------------------------------------------------------- // サンプル: // call DELFILEEXT "c:\\dir\\filename.ext"; // message $$return; // "c:\dir\filename" が表示される。 // call DELFILEEXT "file.name.ext"; // message $$return; // "file.name" が表示される。 // call DELFILEEXT "c:\\dir.name\\.ext"; // message $$return; // "c:\dir.name\" が表示される。 // endmacro; //--------------------------------------------------------------------------- // DELFILEEXT: $$sep = "\\/"; // ディレクトリセパレータ( "\" と "/" ) ##l = strlen($$1); while( ##l ){ ##l = ##l - 1; $$s = midstr($$1,##l,1); if( $$s == "." ){ // ".ext" -> ".ext" を返したければ以下のコメントを外す。 // if( (!##l) || strstr($$sep,midstr($$1,##l-1,1))+1 ) return $$1; return leftstr($$1,##l); } else if( strstr($$sep,$$s)+1 ) return $$1; } return $$1; //---------------------------------------------------------------------------