初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2022-06-30 14:04:47

koko009
Guest

ファイルの存在を取得スクリプトで環境変数を使う方法

いつもお世話になっております。
Tempに指定したファイルの有無を調べるため下記のようにファイルの存在取得のスクリプトを使ってみました。
環境変数を使った場合
変数を設定 [ $file_1; 値:"/%temp%/FileMaker/ContainerCache/chartjs-plugin-colorschemes.js" ]
ファイルの存在を取得 [ 「$file_1」 ; ターゲット: $fileExists1 ]
結果は0
次に使わずフルに記述した場合
変数を設定 [ $file_2; 値:"/C:/Users/koko009/AppData/Local/Temp/FileMaker/ContainerCache/chartjs-plugin-colorschemes.js" ]
ファイルの存在を取得 [ 「$file_2」 ; ターゲット: $fileExists2 ]
結果は1
他に
変数を設定 [ $file_2; 値:Substitute (Get ( テンポラリパス ); 「S11」 ; "FileMaker\ContainerCache\chartjs-plugin-colorschemes.js") ]
では、最初は確認できましたが、いろいろ作業しているうちにテンポラリパスが「S11」から「S11.1」に変わったため読み込めない状況となりました。
単にTempフォルダのパスをフルに記述したくないのと別のPCでファイルの使い回しすることを考えると環境変数を使う方法がよりベターと思えるので変数の値の設定方法をお教えください。
環境を書くのを過去につい失念していましたがwindows10,FMP19です。

#2 2022-06-30 16:34:42

qb_dp
Member

Re: ファイルの存在を取得スクリプトで環境変数を使う方法

こんなカンジで良さそうな。

GetValue ( Substitute ( Get ( テンポラリパス ) ; "/Temp/"; ¶ ) ; 1 ) & "/FileMaker/ContainerCache/chartjs-plugin-colorschemes.js"

Offline

#3 2022-06-30 17:43:39

koko009
Guest

Re: ファイルの存在を取得スクリプトで環境変数を使う方法

qb_dp様 有り難うごっざいます。ちょっと改良し、結果1が得られました。
GetValue ( Substitute ( Get ( テンポラリパス ) ; "/Temp/"; ¶ ) ; 1 ) & "/Temp/FileMaker/ContainerCache/chartjs-plugin-colorschemes.js"

#4 2022-06-30 20:04:23

himadanee
Guest

Re: ファイルの存在を取得スクリプトで環境変数を使う方法

親ディレクトリが使えるようです。
Get ( テンポラリパス ) & "../FileMaker/ContainerCache/chartjs-plugin-colorschemes.js"

#5 2022-07-01 05:46:33

koko001
Guest

Re: ファイルの存在を取得スクリプトで環境変数を使う方法

himadanee様 ありがとうございます。
なるほど ../FileMaker/・・・・でも結果1を得られました。勉強になります。
しかし別のスクリプトで変数に" %TEMP%" を指定して
変数を設定 [ $pth; 値:" %TEMP%" ]
Event を送信 [ ファイル/アプリケーションを開く; "cmd /c copy "& ConvertFromFileMakerPath ( Substitute ( Get ( ファイルパス ) ;Get ( ファイル名 ) & ".fmp12" ; "js" );2) & $pth&"\FileMaker\ContainerCache" ] [ アプリケーションを手前に表示 ]
実行すれば指定フィルド内の全てのファイルがコピーできるので、単純にパスの書き方に問題があるのかスクリプト「ファイルの存在を取得 []」で" %TEMP%" が使えないのかよく理解できない・・・・

#6 2022-07-01 06:59:12

himadanee
Guest

Re: ファイルの存在を取得スクリプトで環境変数を使う方法

環境変数を展開するのはcmd.exeの機能ですから、FMのパス指定部分では使えません。

#7 2022-07-01 07:35:48

koko009
Guest

Re: ファイルの存在を取得スクリプトで環境変数を使う方法

himadanee様 ありがとうございます。

環境変数を展開するのはcmd.exeの機能ですから、FMのパス指定部分では使えません。

Windowsの環境変数は、FMのパス指定部分では使えないのか・・・残念!!

#8 2022-07-01 08:50:32

himadanee
Guest

Re: ファイルの存在を取得スクリプトで環境変数を使う方法

Windows(とMac。iOSもUnixベースならあるのかな?)独自の機能なので、今後もサポートされないと思いますが、そもそもFMのパス指定はOSの形式がそのまま使えるわけではないので(file:とかimagemac:とかの接頭辞、複数行のパスなど)
環境独自パスというとConvertFromFileMakerPath関数がありますが、これでもサポートしてないようですね。

Event送信とかプラグインとかJavascriptで取得可能?

親ディレクトリが使えるのは、ヘルプにちゃんと例示されてました。
https://help.claris.com/ja/pro-help/con … paths.html
サーバだとアクセス拒否されるので使えないでしょう。

#9 2022-07-23 14:01:22

koko009
Guest

Re: ファイルの存在を取得スクリプトで環境変数を使う方法

無用な蛇足です。
windowsの環境変数「%TEMP%」が使えない代わりに親ディレクトリが使えるので問題は解決していたのですが、フォルダパスだけをファイルパスから抽出するのに今回Substitute()を使いましたが大昔には下記の計算式で求めていたことをすっかり忘れていました。
Left (Get ( ファイルパス ) ; Position ( Get ( ファイルパス ) ; "/" ; 1 ; PatternCount ( Get ( ファイルパス ) ; "/" )))
そこで
Left (Get ( テンポラリパス ) ; Position ( Get ( テンポラリパス ) ; "/" ; 1 ; PatternCount (Get ( テンポラリパス ) ; "/" )-1)) & "FileMaker/ContainerCache/chartjs-plugin-colorschemes.js"
結果
/C:/Users/koko009/AppData/Local/Temp/FileMaker/ContainerCache/chartjs-plugin-colorschemes.js
となり
Get ( テンポラリパス ) & "../FileMaker/ContainerCache/chartjs-plugin-colorschemes.js"
で求めると
/C:/Users/koko009/AppData/Local/Temp/S11/../FileMaker/ContainerCache/chartjs-plugin-colorschemes.js
となります。
フォルダパスを求める方法が前と違っていたのが気になってオブジェクトフィルドからファイルの保存場所を求めていたことお思いだし記した次第です。

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 560.87 KiB (Peak: 579.35 KiB) ]