みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Windows7 環境でFmPro12使用しようとしています。
Windowsの特定のフォルダの特定ファイルの存在の有無、あるいはファイルの中身(テキストファイル)
をFileMaker上で判断し、メニュ画面のレイアウトを切り替えるような処理をしたいと思っております。
そもそも Windowsフォルダのファイルの存在チェックや中身取得可能でしょうか?
調べる限りその方法はわかりませんでししたので、投稿させていただきました。
可能であれば、その方法を教えてください。
エラー処理[オン]
URLから挿入[選択;ダイアログなし;テキストフィールド;"file:パス"]
確認ですが、「URLから挿入」で該当ファイルを対象し、挿入できないない(ファイル存在する場合)
エラー処理でエラーとなるため、そのエラーをハンドリングするという認識でよろしいでしょうか?
やはりファイルの中身を見ることは無理でしょうか?
よろしくお願いいたします。
エラー処理[オン]
URLから挿入[選択;ダイアログなし;テキストフィールド;"file:パス"]
インポートで、フォルダーを選択すると、一部のファイルはインポート可能で、その内容も見ることができるものもあります。
完全にはご希望通りにはならないと思いますが。
Offline
挿入できないのはファイルが存在「しない」場合です。存在すればテキストフィールドに内容が入る。
なんだけど、テキストがSJISだと507(フィールドの値が入力値の制限オプションに指定されている計算式を満たしません)という変なエラーになった。(何も制限してないのに)
やっぱり複数パス指定でファイルを挿入してみるとかしかないのかな?
変数を設定[$path;"filewin:調べるパス]
変数を設定[$dummy;"filewin:"&Get(テンポラリパス)&Get(UUID)]
フィールド内容のエクスポート[適当な内容で$dummyにファイルを作成]
ファイルを挿入[ダイアログなし;]$pathと$dummyを指定
入ったファイルのファイル名を見れば存在したかわかる
dirをインポートする方がいいかなあ
>フォルダのファイルの存在チェック
以下の様な方法もあります。
https://sites.google.com/site/scriptmak … -file-name
フォルダ内のファイル名を取得
1,
プラグイン使用
ScriptMakerMS
https://sites.google.com/site/scriptmakerms/
フィールド設定 [Run::result; iiil_DOScmd( "dir /b \"C:\フォルダ\*.*"" )]
2,
プラグインなし
(clipが使えればコレでもOKです。)
Event を送信 [「aevt」; 「odoc」; 「cmd /c dir /b "C:\フォルダ\*.*" | clip」]
スクリプト一時停止/続行 [間隔(秒): 1]
貼り付け [選択; フィールド]
3,
プラグインなし
(file.txtを書きだして読込)
Event を送信 [「aevt」; 「odoc」; 「cmd /c dir /b
"C:\Users\tomita_hirofumi\Desktop\!TEMP\*.*" > "d:\file.txt"」]
フォルダだけを取り出すには「dir /ad」とし(dはdirectoryの略)、
フォルダ以外(つまりファイル)だけを取り出すには「dir /a-d」とする。
/b/a-d …ファイル名だけを表示させる
/b/ad …フォルダ名だけを表示させる
/S...サブディレクトリも含める(戻り値:フルパス)
Last edited by qb_dp (2014-02-27 14:48:03)
Offline
#6以外に、
特定フォルダ内のファイル名の一覧を、HTAイベント送信で取得する方例。
フォルダパス指定例:「 "c:\\temp\\" 」(※ \→\\、""で囲む)
【HTAコード内容】
mshta "javascript:
clipboardData.clearData('Text');
WS=new ActiveXObject('WScript.Shell');
HPath='"c:\\temp\\"'; /*フォルダパス指定(※ \→\\、""で囲む)*/
CMD='cmd /c dir /b '+HPath;
EXC=WS.Exec(CMD);
RD=EXC.Stdout.ReadAll();
clipboardData.setData('Text',RD);
WS=null;
close();"
【スクリプト内容】
・消去 [フィールド]
・Eventを送信 [「aevt」;「odoc」; 上記HTA内容]
・Loop
・ スクリプト一時停止/続行 [間隔(秒):0.1]
・ 貼り付け [選択; フィールド]
・ Exit Loop If [フィールド<> ""]
・End Loop
さらに、どうしても特定テキストファイルの内容が必要な場合、上記手法をマスターすれば出来なくもありません。
Offline
Pages: 1
[ Generated in 0.006 seconds, 10 queries executed - Memory usage: 562.68 KiB (Peak: 567.93 KiB) ]