(AutoHotkey)(ファイル名と思われる文字列から 拡張子以外と思われる部分を抜き出す 編)
前回に引き続き 個人用の ライブラリからの ぼちぼち紹介です、 ほんとうに ぼちぼちな紹介になってます 笑)
拡張子だけを変更したいという場面も たまにありますよね、 そのためには 拡張子以外の部分を取り出す必要があるわけですが
まぁ それも 特に難しい事もなく API関数で一発で 取得出来ちゃいますね
『最後の「.」以降を削除するには・・・・』みたいなことを考える必要も無いです
前回紹介した E2D関数 と同じく あくまで 『拡張子以外と思われる部分だけを抜き出す関数』なので
実ファイルが存在する必要はありません
もしも 実ファイルが存在する事を保証する必要がある場合は 別途 ファイルの存在を確認してください
もちろん ロングファイル名 や 2バイト文字でも問題は無いはずです
「フルパス」でも 「相対パス」でも 「ネットワーク上のパス」でも 「拡張子を含むファイル名のみ」でも ファイル名として成立しているならば
最後の「.」以降を省いて 戻り値として 返ってきます
一旦文字列を確保する バッファのサイズ は デフォルトで 1000バイト確保してますので 普段は 指定する必要は無いと思いますが
必要に応じて 第2引数の値を変更してください
拡張子だけを変更したいという場面も たまにありますよね、 そのためには 拡張子以外の部分を取り出す必要があるわけですが
まぁ それも 特に難しい事もなく API関数で一発で 取得出来ちゃいますね
『最後の「.」以降を削除するには・・・・』みたいなことを考える必要も無いです
E2DF(Expression, BufferSize = 1000) { VarSetCapacity(Buf, BufferSize, 0x00) Buf := Expression DllCall("shlwapi.dll\PathRemoveExtensionA", "Str", Buf) Return Buf }関数名の由来 は ExpressionToDirectory&Filenameです
前回紹介した E2D関数 と同じく あくまで 『拡張子以外と思われる部分だけを抜き出す関数』なので
実ファイルが存在する必要はありません
もしも 実ファイルが存在する事を保証する必要がある場合は 別途 ファイルの存在を確認してください
もちろん ロングファイル名 や 2バイト文字でも問題は無いはずです
「フルパス」でも 「相対パス」でも 「ネットワーク上のパス」でも 「拡張子を含むファイル名のみ」でも ファイル名として成立しているならば
最後の「.」以降を省いて 戻り値として 返ってきます
一旦文字列を確保する バッファのサイズ は デフォルトで 1000バイト確保してますので 普段は 指定する必要は無いと思いますが
必要に応じて 第2引数の値を変更してください