[ 新規に投稿する ]

スクリプトでフィルタしたいNo.11665
てれぱんだ さん 25/07/24 03:03 [ コメントを投稿する ]
  お世話になっております。

選択しているファイルのファイル名に含まれる文字列でフィルタするスクリプトを作成しているのですが、フィルタバーに文字列をセットするところが上手くいきません。openメソッドについて教えていただけますか?

ヘルプページのスクリプトの例に「フォーカスのある項目と同じ拡張子でフィルタ」というスクリプトがあったので、参考にしました。

https://help.maruo.co.jp/hmfilerclassic/hmfilerclassic_script_sample.html

例では、open("*." + strExt); でフィルタバーに「*.(strExtにセットされた)拡張子」を入力してフィルタ出来るのですが、これを例えば、open(strExt); のようにすると、フィルタバーには何も入力されずフィルタが実行されません。

任意の文字列でフィルタするスクリプトはどのように書けばよいでしょうか?

open("" + strExt); や open("fuzzy:" + strExt); のような書き方も試してみたのですが、うまくいきませんでした。なお、"fuzzy:"のようにコロンを含む文字列をセットしようとすると、なぜかデスクトップ(%UserProfile%\Desktop)に移動してしまいます。

一応、クリップボード経由では実現できたのですが、openメソッドでは単純な文字列でフィルタすることはできないのでしょうか?
※setClipboard(strExt);でクリップボードに格納して、スクリプトライブラリにある「クリップボードのデータを使い、フィルタ処理を実行」の方法で、フィルタバーに貼り付けEnterを押すということはできました。

以上、よろしくお願いします。
[ ]
RE:11665 スクリプトでフィルタしたいNo.11666
秀丸担当 さん 25/07/24 09:19 [ コメントを投稿する ]
  openは、通常はフォルダを開くためにあります。
ファイル名部分で*を含むようになっていると、フィルタとして動作します。
アドレスバーに直接入力するときもほぼ同じです。

strExtだけの場合は、test.txtの"txt"の部分だとして、"txt"という拡張子も無いファイルなのでうまくいかないと思います。

正規表現やあいまい検索が使えるのは、フィルタバーや検索枠の場合だけでした。
ヘルプのフィルタ/ワイルドカードの書き方のところには区別が無いような表現で誤りでした。
アドレスバー(open相当)では正規表現などはできないと書くか、あるいは対応してできるようにするか検討します。
[ ]
RE:11666 スクリプトでフィルタしたいNo.11667
てれぱんだ さん 25/07/24 15:57 [ コメントを投稿する ]
  ご返信ありがとうございます。

*を使用するとフィルタとして機能するだけで、もともとフィルタバーを操作するようなメソッドではないのですね。

他の方法がないかを調べていて、フィルタバーではなくサイドバーの検索を使うと、新しいタブに出力できてなお良いと思いました。
setClipboard(str); Command("検索枠"); SendKeys("+{INSERT}{ENTER}"); で検索結果を表示するところまでは出来たのですが、最後にCommand("検索枠");やSendKeys(^F);でサイドバーを閉じようとするとうまくいきません。

以下を読むと、SendKeysを複数回使うようなやり方は、そもそも別途WSHのみでやる方が良さそうですが、サイドバーの検索をスクリプトでコントロールする方法は、SendKeysで貼り付けを行うなど以外にありますか?
https://log.maruo.co.jp/turukame/turukame_7/x1203488.html
[ ]
RE:11667 スクリプトでフィルタしたいNo.11668
秀丸担当 さん 25/07/24 16:46 [ コメントを投稿する ]
  *を使用したときのフィルタは、フィルタバーがあれば、結果的にフィルタバーへと反映されます。
V2.11β2で、アドレスバーやopenのときのre:による正規表現などもできるようにしました。

SendKeysなどでキー入力をする方法は、UIの変化で変わるかもしれないので、あまりおすすめとは言えないです。
サイドバーの検索をスクリプトで直接操作する方法は、ネタとしてはあるのですが、いまのところ方法は無いです。
[ ]
RE:11668 スクリプトでフィルタしたいNo.11669
てれぱんだ さん 25/07/24 18:17 [ コメントを投稿する ]
  >V2.11β2で、アドレスバーやopenのときのre:による正規表現などもできるようにしました。
ご対応ありがとうございます。

Command("履歴1(新しいタブ)&履歴削除");
open("re:.*" + str);
のような形で望んでいたことができました。
[ ]

[ 新規に投稿する ]