みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Windows 7
Filemaker pro 14 advanced を使用しています。
顧客管理をFilemakerにて行っているのですが、顧客毎に写真などが入ったフォルダがあり、
そのフォルダのショートカットをデスクトップに作成するスクリプトを作成したいのですが、可能でしょうか?
よろしくお願いします。
PowerShellを使ったサンプルです。※PowerShellは、Win7に標準搭載なので下準備は、必要ありません。
スクリプト例
変数を設定 [$PS; 値:"$WshShell = New-Object -ComObject WScript.Shell;
$Shortcut = $WshShell.CreateShortcut(\"$Home\Desktop\フォルダー.lnk\");
$Shortcut.TargetPath = \"D:\新しいフォルダー 01\";
$Shortcut.Save();"]
Event を送信 [「aevt」; 「odoc」; "PowerShell.exe -Command " & Quote ( $PS )]
\"$Home\Desktop\フォルダー.lnk\" の部分がショートカット名
\"D:\新しいフォルダー 01\" の部分がリンク先になります。
ショートカット名、リンク先は、FileMakerの計算式で任意の文字に置き換えて下さい。
Offline
DBとは無縁なので、FMでは出来ません。
WinのPowerShell以外の外部アプリでやるとすれば、例えば、「Eventを送信」で以下のHTAプログラムを送信・実行する方法も!
"mshta \"javascript:var sh=new ActiveXObject('WScript.Shell');var strDesktop=sh.SpecialFolders('Desktop');var file=sh.CreateShortcut(strDesktop+'/ショートカット名.lnk');file.TargetPath='file:/'+'C:/そのフォルダへのパス';file.Save();alert('作成しました。');sh=null;close();\""
青字部分はご自分のものへ入れ替えてください。
Last edited by Hiro (2016-01-31 00:56:49)
Offline
qb_dp 様
ありがとうございます。
\"$Home\Desktop\フォルダー.lnk\" の部分がショートカット名
\"D:\新しいフォルダー 01\" の部分がリンク先になります。
とのことですが、
\"$Home\Desktop\フォルダー.lnk\"
の「フォルダー」の部分にスクリプトで変数を設定したものや計算式を設置したのですが、
うまく動作しません。
(ちなみに、変数でなく普通の文字列では、うまくデスクトップにショートカットが作成されます。)
ご教授いただけないでしょうか。よろしくお願いします。
Hiro 様
ありがとうございます。
「Eventを送信」とのことですが、「Eventを送信」のオプションでは、ファイル/アプリケーションを開くで、
「計算」を選んで「指定」で教えていただいたHTAプログラムを入力すればいいのでしょうか?
上記の通りにして、青字の部分を入れ替えたのですが場合、
--------------------------------------------------
このページのスクリプトでエラーが発生しました。
ライン:1
文字:142
エラー:指定したファイルが見つかりません。
コード:0
URL:
--------------------------------------------------
とメッセージが出てしまいます。
ご教授いただけないでしょうか。よろしくお願いします。
「Eventを送信」とのことですが、「Eventを送信」のオプションでは、ファイル/アプリケーションを開くで、
「計算」を選んで「指定」で教えていただいたHTAプログラムを入力すればいいのでしょうか?
設定はそれで良いと思います。
エラー:指定したファイルが見つかりません。
だと、青字部へ指定したフォルダのパス指定が悪いのでしょう。
フォルダ名の後に「\」とか「/」を付けてしまったとか?
青字部入れ替え後のHTA式を折り返して貰えたら、原因を見付けられるかも、
Offline
Hiro様
返信ありがとうございます。
入れ替え後のHAT式は以下の通りです。
"mshta \"javascript:var sh=new ActiveXObject('WScript.Shell');var strDesktop=sh.SpecialFolders('Desktop');var file=sh.CreateShortcut(strDesktop+'/1000 山田 一郎 様.lnk');file.TargetPath='file:/'+'C:/ D:\1000 山田 一郎 様';file.Save();alert('作成しました。');sh=null;close();\""
最終的には、青色のところは「変数を設定」して使用したいのですが、まず通常の文字列で動作確認をしたのですが、うまくいきません。
よろしくお願いいたします。
"mshta \"javascript:var sh=new ActiveXObject('WScript.Shell');var strDesktop=sh.SpecialFolders('Desktop');var file=sh.CreateShortcut(strDesktop+'/1000 山田 一郎 様.lnk');file.TargetPath='file:/'+'C:/ D:\1000 山田 一郎 様';file.Save();alert('作成しました。');sh=null;close();\""
●「1000 山田 一郎 様」フォルダが D: 直下にあるのなら、
C:/ D:\ → D:/1000 山田 一郎 様
にしないと、
●"1000 山田 一郎 様"を$変数にするなら、
"mshta \"javascript:var sh=new ActiveXObject('WScript.Shell');var strDesktop=sh.SpecialFolders('Desktop');var file=sh.CreateShortcut(strDesktop+'/" & $変数 & ".lnk');file.TargetPath='file:/'+'D:/" & $変数 & "';file.Save();alert('作成しました。');sh=null;close();\""
Offline
Hiro 様
ありがとうございます。
$変数を設定してうまく、デスクトップにショートカットを作成することができました。
もう一つ教えていただきたいのですが、ショートカットの作成先が、デスクトップでなく特定のフォルダにしたい
場合はどうしたらよいのでしょうか。
●例として、デスクトップのパスを手書き指定するなら、
"mshta \"javascript:var sh=new ActiveXObject('WScript.Shell');var shortcutPath='C:/Users/Admin/Desktop';var file=sh.CreateShortcut(shortcutPath+'/" & $変数 & ".lnk');file.TargetPath='file:/'+'D:/" & $変数 & "';file.Save();alert('作成しました。');sh=null;close();\""
●任意ショートカットパス(例えば:ディスクットップパス「C:/Users/Admin/Desktop」)を$パス変数に入れるなら、
"mshta \"javascript:var sh=new ActiveXObject('WScript.Shell');var shortcutPath='" & $パス変数 & "';var file=sh.CreateShortcut(shortcutPath+'/" & $変数 & ".lnk');file.TargetPath='file:/'+'D:/" & $変数 & "';file.Save();alert('作成しました。');sh=null;close();\""
Last edited by Hiro (2016-02-01 10:21:52)
Offline
Hiro様
ありがとうございます。
おかげさまで、特定のフォルダにショートカットを作成することができました。
重ねて質問があるのですが、
現在以下の式を「Eventを送信」で、デスクトップにフォルダを作成しております。
デスクトップではなく、特定の場所に新しくフォルダを作成するためにはどうしたらよいでしょうか?
重ね重ね質問させてもらっていますが、よろしくお願いします。
----------------------------
Let([n = Length( Get( デスクトップパス ) ) ;
myDesktop = Middle( Get( デスクトップパス ) ; 2 ; n ) ;
out_dir = myDesktop & $デスクトップに作成するフォルダ名] ;
"cmd.exe /c if not exist \"" & out_dir & "\"" & " mkdir \"" & out_dir & "\"")
----------------------------
ただ作成したいフォルダのディレクトリを指定するだけです。
Let(
#myFolder="作成フォルダのディレクトリ"; //デスクトップにTemp名のフォルダを作るなら:"C:\Users\Admin\Desktop\Temp"
"cmd /c if not exist \"" & #myFolder & "\" mkdir \"" & #myFolder & "\""
)
Last edited by Hiro (2016-02-02 19:50:46)
Offline
Hiro 様
ありがとうございます。
以下のフォルダ(Test)の中に
-----------------
C:\Users\Admin\Documents\Test
-----------------
$変数 設定した名前のフォルダを作成したく、次の式を「Eventを送信」に設定したのですが、
うまくいきません。
Let(
#myFolder="C:\Users\Admin\Documents\Test\& $変数 &";
"cmd /c if not exist \"" & #myFolder & "\" mkdir \"" & #myFolder & "\""
)
何度も申し訳ありませんが、よろしくお願いいたします。
計算結果のパスの中身は精査できませんが、少なくとも計算式の間違いは、
#myFolder="C:\Users\Admin\Documents\Test\& $変数 &";
↓
#myFolder="C:\Users\Admin\Documents\Test\" & $変数;
【訂正】
外出前のバタバタした時にレスを入れたのでミスってしまいました。
以下に訂正ください。
●#myFolder="C:\Users\Admin\Documents\Test\\" & $変数;
「"」の前の「\」にも、\ 自身をエスケープする必要アリ。
Last edited by Hiro (2016-02-08 17:53:09)
Offline
Hiro様
ありがとうございます。
任意のフォルダーに希望するショートカットを作成することができるようになり、
業務を大変簡便化でき、生産性があがりそうです。
Pages: 1
[ Generated in 0.006 seconds, 10 queries executed - Memory usage: 557.58 KiB (Peak: 578.12 KiB) ]