スクリプトでフィルタしたい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のみでやる
方が良さそうですが、サイドバーの検索をスクリプトでコントロールする方法は、Se
ndKeysで貼り付けを行うなど以外にありますか?
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);
のような形で望んでいたことができました。


[ ]