MZ Platformとは › 掲示板 › MZプラットフォームユーザー会掲示板 › Windowsエクスプローラー起動について
-
投稿者投稿
-
2024年11月25日 2:56 PM #7695koni参加者
お世話になっております。
外部プログラム通信を使用した「Windowsエクスプローラー起動」を掲示板の下記リンク、添付ファイルを参考に検討中ですが、質問があります。現状、開きたいフォルダのパス名は「18729_●●_●●」のように「連番ID_型番_担当者」などから設定しております。
連番ID以外は、不規則な情報ですので、パス名の18729までをMZ側で設定したら「18729_●●_●●」を開くようにしたいと考えています。<アプリ上の起動例>
添付アプリのフィールドに「explorer C:\Users\konishi\Desktop\18729」と入力して「起動」ボタンを押せば
「explorer C:\Users\konishi\Desktop\18729_●●_●●」と裏で認識して、エクスプローラを開く処理としたい。よろしくお願いいたします。
2024年11月26日 4:10 PM #7697MZPlatformユーザー会キーマスターご連絡ありがとうございます。
まず、[外部プログラム通信]のメソッド「標準のアプリケーションでファイルを開く(File)」の引数にフォルダまでのパスを指定すれば、自動的にファイルエクスプローラーでフォルダを開けるかと思います。参考にしていただいた掲示板の記述は旧バージョンでの処理となっており、お手数をお掛けいたしました。
[ファイル]コンポーネントでフォルダー名を設定し、その直下または配下にあるフォルダまでのパスのリストを取得することができます。
ただ、該当のフォルダまでのパスに数字を含む階層名がある場合も想定して、添付のファイルでは「getSubDirectoryNodeList()」を使っています。ツリーノード取得機能のメソッドですが、指定した階層直下のフォルダ名だけをリスト形式で取得できます。ID名で部分一致の検索をするには、メソッド「matches(String)」または「startsWith(String)」を使用します。
これらのメソッドは[リスト格納変数]には無いので、要素を取出し[文字列格納変数]に入れ、繰り返し処理を行います。
「startsWith(String)」は対象の文字列の最初の部分が指定した文字列と一致するか結果が「true」か「false」かで返ります。開きたいフォルダの名前が必ずIDから始まる場合はこちらでも良いと思います。
「matches(String)」は引数に正規表現を使用できます。例えば「.*ID.*」のように指定すれば、IDが文字列のどの位置にあっても該当します。
ただし、どちらのメソッドも部分一致であるため、MZPlatformフォルダ名を例に取ると、例えば「startsWith(String)」の引数は「4.0」、「matches(String)」の引数は「.*4.0.*」と指定した場合、「4.0」、「4.0_36」のフォルダ名両方が該当することになります。以上思ったより処理が長くなりましたので、検証のため別ファイルを作成しています。
ご不明な点、ご要望等ございましたら、再度ご連絡いただければ幸いです。
どうぞよろしくお願い申し上げます。添付ファイル:
2024年11月27日 3:23 PM #7701koni参加者ご回答ありがとうございます。
また、サンプルファイルもありがとうございます。
開きたいフォルダの名前が必ずID値からになりますので、「startsWith(String)」を使用する方法で実施することができました。
今後ともよろしくお願いいたします。2025年6月13日 2:57 PM #7795koni参加者お世話になっております。
以前ご回答いただきました「Windowsエクスプローラー起動」について、追加で質問があります。連番IDが存在しない場合に、フォルダを作成する処理を追加したいと検討しております。
メッセージを表示した上で、「はい」を押した時に、フォルダ名を「18729_●●_●●」の様にしたいと考えております。よろしくお願いいたします。
2025年6月16日 1:57 PM #7796MZPlatformユーザー会キーマスターご連絡ありがとうございます。
該当するフォルダ名が存在する場合に、フォルダー開く処理を既に設定しているので、今回は存在しない場合の処理を設定することになります。
フォルダ名はあいまい検索で探している関係上、[繰り返し処理]で一つずつ照合していますが、フォルダ名が見つかった場合は[整数(BigInteger)格納変数]の値を1増やすことによって、発見のカウンターとすることにします。
[整数(BigInteger)格納変数]の値が0より大きくない場合、つまりファイルが見つからない場合、[ファイル]コンポーネントに作成するフォルダ名を設定し、「ディレックトリ作成()」を行うことになります。先日お送りしたサンプルに、例えば「MZPlatform/5.0」のフォルダを作成する処理を設定しました。新規フォルダの命名規則がさらに複雑な場合は、[文字列格納変数]を使用した処理ここにを追加することになるかと思います。
添付のファイルをご覧いただき、ご不明な点を再度ご連絡いただければ幸いです。
どうぞよろしくお願い申し上げます。- この返信は2週、 3日前にMZPlatformユーザー会が編集しました。
添付ファイル:
2025年6月30日 11:29 AM #7800koni参加者ご回答ありがとうございます。
[整数(BigInteger)格納変数]のカウントにより場合分けができるとのことで、了承いたしました。この方法は別の箇所でも活用していきたいと思います。
今後ともよろしくお願いいたします。 -
投稿者投稿
- このトピックに返信するにはログインが必要です。