FileMakerの各種パスの扱いを徹底攻略 ②パスを利用したファイル・フォルダ操作編【脱初心者への道】

パスの扱いが独特なFileMaker(正式名称:Claris FileMaker)

この記事では、FileMakerでのファイル・フォルダ操作の基礎と挙動を理解し、より実務的な活用を学ぶことを目指しています。

「パス取得編」記事の続きとなる内容のため、前回記事もご参照ください。

FileMakerの各種パスの扱いを徹底攻略 ①パス取得編【脱初心者への道】
パスの扱いがかなり独特なFileMaker(正式名称:Claris FileMaker)。この記事では、FileMakerのパス取得と形式変換の基礎を理解し、環境の差やプラグインとの連携時に詰まらなくなることを目指しています。FileMak…

検証環境

macOS 26.5.2 (Tahoe)
FileMaker 2026 (26.0.2.212)

BaseElements Plugin 5.0.0

対応OSにあわせたパス変換用のカスタム関数

検証のため、使用中のOSに適したパスに自動変換できるよう、「__ConvertFromFileMakerPath_Platform」というカスタム関数を作りました。

引数で渡したFileMaker形式のパスを、macOSであればPosixPath、WindowsであればWinPathで標準形式のパスに変換するというシンプルなカスタム関数です。

今記事では、解説時にこのカスタム関数を使用します。

コード

/* 
 * =====================================================
 * __ConvertFromFileMakerPath_Platform ( fmPath )
 * 引数 :FileMaker形式のパス
 * 戻り値:標準形式のパス
 *     Windowsの場合はWinPath/その他の場合はPosixPathで変換
 * =====================================================
 */

Let ( 
	[
		~isWin = Abs ( Get ( システムプラットフォーム ) ) = 2
	] ;
	Case ( 
		IsEmpty ( fmPath ) ; 
		"" ; 

		~isWin ; 
		ConvertFromFileMakerPath ( fmPath ; WinPath ) ; 

		ConvertFromFileMakerPath ( fmPath ; PosixPath )
	)	
)

ディレクトリ操作

ディレクトリ操作にはBaseElementsプラグインの関数を使用するのが楽です。
はじめに検証・解説のため、デスクトップ直下にあるtestフォルダの「標準形式のパス」を用意します。

変数を設定 [ $testPath ; 値:

__ConvertFromFileMakerPath_Platform ( Get ( デスクトップパス ) & "test" )

ファイル・フォルダの存在確認

ディレクトリ操作前に、該当のファイル・フォルダが存在するかどうかを確かめるのがオススメです。
BE_FileExists」関数を利用します。

BE_FileExists ( $testPath )

指定パスのファイル・フォルダが存在すれば1、存在しなければ0が返ってくるため、存在しない場合の条件分岐を書くことが可能です。

フォルダの作成

フォルダを作成したい場合、「BE_FolderCreate」関数を利用します。

例えばデスクトップにtestというフォルダを作りたい場合、

変数を設定 [ $_ ; 値:

BE_FolderCreate ( $testPath )

という感じで、「BE_FolderCreate」関数に標準形式のパスを渡します。

フォルダが存在しないフォルダを生成し「0」を返す
フォルダが存在する処理は行われず「0」を返す
FileMaker形式のパスを渡すエラーが発生し「?」を返す

ちなみに、BaseElementsプラグインの関数は「変数を設定」スクリプトステップにて使用します。
「$_」という変数名は、関数実行用の一時的な名前のため、自由に設定可能です。

ファイル・フォルダの削除

ファイル・フォルダを削除したい場合、「BE_FileDelete」関数に削除対象のパスを渡します。

変数を設定 [ $_ ; 値:

BE_FileDelete ( $testPath )

指定されたファイル・フォルダは即時削除され、ゴミ箱には入りません
またフォルダを削除する場合、中にファイルが入っていた場合は一緒に削除されます。

ファイル・フォルダが存在しない処理は行われず「0」を返す
ファイル・フォルダが存在する指定ファイル・フォルダを削除し「0」を返す
FileMaker形式のパスを渡す指定ファイル・フォルダの有無に関わらず、処理は行われず「0」を返す

パスの形式が間違っていても「?」エラーが返ってこない点に注意が必要です。

ファイル・フォルダの移動

ファイル・フォルダを移動したい場合、「BE_FileMove」関数に移動前・移動後のパスを渡します。

BE_FileMove ( 移動前のパス ; 移動先のパス ; 同名のファイルを上書きするかどうか )

「同名のファイルを上書きするかどうか」は0か1で設定します。
省略も可能で、省略した場合は0と同じ扱いになります。

0同名のフォルダ・ファイルがあるとエラーになる
1既存のフォルダ・ファイルを上書きする

設定値によって上記違いがあり、基本的には0(省略)で運用するのが安全だと思います。
ただし、空のフォルダは0でも上書きされてしまうようです。

使用例
変数を設定 [ $docPath ; 値:

__ConvertFromFileMakerPath_Platform ( Get ( ドキュメントパス ) & "test" )

変数を設定 [ $_ ; 値:

BE_FileMove ( $testPath ; $docPath )

上記の処理を行うと、デスクトップのtestフォルダが、ドキュメントフォルダに移動します。
フォルダを移動させる場合、中に入っているファイルも一緒に移動されます。

ファイル・フォルダが存在しない処理は行われず「?」を返す
ファイル・フォルダが存在する指定ファイル・フォルダを移動し「0」を返す
FileMaker形式のパスを渡す処理は行われず「?」を返す

ほかの処理とは少し異なり、成功しない場合は基本エラーになるようです。

フォルダやファイルのリネームにも使用可

同じディレクトリで名前を変更したパスを渡すと、ファイル・フォルダのリネームにも使用できます。

例えば、デスクトップのtestフォルダをtest2にリネームしたい場合は下記処理を行います。

変数を設定 [ $test2Path ; 値:

__ConvertFromFileMakerPath_Platform ( Get ( デスクトップパス ) & "test2" )

変数を設定 [ $_ ; 値:

BE_FileMove ( $testPath ; $test2Path )

パス記述の注意点

「移動前に指定したフォルダを、移動後に指定したフォルダに移動させる」という機能ではない点に注意が必要です。
具体的には、移動前のパスと移動後のパスを厳密に書く必要があります。

例えばデスクトップにあるtestフォルダを、デスクトップのmovedフォルダ下に移動したい場合、下記のような記述が必要です。

正しい例

BE_FileMove ( "/Users/admin/Desktop/test" ; "/Users/admin/Desktop/moved/test" )

しかし、下記のような間違った記述では、

間違った例

BE_FileMove ( "/Users/admin/Desktop/test" ; "/Users/admin/Desktop/moved" )
  • testフォルダがmovedフォルダにリネームされる
  • movedフォルダがすでに存在し、かつ中身が空ではない場合はエラーが発生しフォルダの移動は行われない

どちらかの意図しない処理が行われてしまいます。

タイトルとURLをコピーしました