Windowsエクスプローラー起動について

MZ Platformとは 掲示板 MZプラットフォームユーザー会掲示板 Windowsエクスプローラー起動について

3 件の投稿を閲覧中 - 1 ~ 3 件(全 3 件)
  • 著者
    投稿
  • #7695
    koni
    一般参加者

    お世話になっております。
    外部プログラム通信を使用した「Windowsエクスプローラー起動」を掲示板の下記リンク、添付ファイルを参考に検討中ですが、質問があります。

    https://ssl.monozukuri.org/mzplatform/forums/topic/windows%e3%81%ae%e3%82%a8%e3%82%af%e3%82%b9%e3%83%97%e3%83%ad%e3%83%bc%e3%83%a9%e3%83%bc%e3%82%92%e4%bd%bf%e7%94%a8%e3%81%97%e3%81%9f%e3%83%95%e3%82%a9%e3%83%ab%e3%83%80%e3%81%ae%e9%96%8b%e3%81%8d/

    現状、開きたいフォルダのパス名は「18729_●●_●●」のように「連番ID_型番_担当者」などから設定しております。
    連番ID以外は、不規則な情報ですので、パス名の18729までをMZ側で設定したら「18729_●●_●●」を開くようにしたいと考えています。

    <アプリ上の起動例>
    添付アプリのフィールドに「explorer C:\Users\konishi\Desktop\18729」と入力して「起動」ボタンを押せば
    「explorer C:\Users\konishi\Desktop\18729_●●_●●」と裏で認識して、エクスプローラを開く処理としたい。

    よろしくお願いいたします。

    #7697
    MZPlatformユーザー会
    サイト管理者

    ご連絡ありがとうございます。

    まず、[外部プログラム通信]のメソッド「標準のアプリケーションでファイルを開く(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」のフォルダ名両方が該当することになります。

    以上思ったより処理が長くなりましたので、検証のため別ファイルを作成しています。
    ご不明な点、ご要望等ございましたら、再度ご連絡いただければ幸いです。
    どうぞよろしくお願い申し上げます。

    添付ファイル:
    #7701
    koni
    一般参加者

    ご回答ありがとうございます。
    また、サンプルファイルもありがとうございます。
    開きたいフォルダの名前が必ずID値からになりますので、「startsWith(String)」を使用する方法で実施することができました。
    今後ともよろしくお願いいたします。

3 件の投稿を閲覧中 - 1 ~ 3 件(全 3 件)
  • このトピックに返信するには、ログインしてください。