備忘録のぺえじ

POCHI - S

ポチエス単体でフォルダを新規作成

fmd.exe(フォルダ作成ツール)をDL。esExt.iniは

[folder]
E:\Application\SimpleTools\fmd\FMD.EXE | m&kdir
    >"%P%X"

でOK。

.chmや.hlpを選択実行するには

excute=の設定だとファイル操作が出来ないからね。
ただ、「.chmのシステム関連付けはhh.exe」といった表示はあんまし意味がないので、

[.*]
@system
%name=関連付け実行(&:)

こんな感じがオススメです。
関連付け専用版はポップアップメニューのファイル名部分をクリック、ですね。

フィルタオプションを使う

ShorterLauncherなどは設定ファイルの区切りに「|(パイプ)」を使うため、ポチエスの引数に「/m=〜|&」と付けても読み込みに失敗します。
これを回避するには、ArgHelperとかを挟んでそちらに引数を書き込むのがよいかと思われます。

ArgHelperの紹介ArgHelperの配布サイト

フォルダを転送する時は

説明書にあるとおり、ポチエスはオプションのマクロ定義に「-」を付けることでフォルダ転送時の挙動を変えることが出来ます。具体的には、

%Pの例 :C:\WINDOWS\system32\
%-Pの例:C:\WINDOWS\system32

となります。この違いは結構大きくて、筆者の使っているソフトの中では、

といったことが起きます。使っている時にうまく転送できなかったりした場合は、まずこの辺りから疑ってみるといいかと。

RegularRenamerで一括リネームしてみよう

だいなファイラーでマークしたファイルをRegularRenamerで一括リネームしてみたいと思います。

だいなファイラーの外部コマンドに

名前              :一括リネーム
実行ファイルのパス:E:\Application\esExt5\esExt5.exe
パラメーター      :/#s=rrExt.ini $MF
「実行ファイルのあるディレクトリ」にチェック

で登録。そのrrExt.iniは

[.*]
(RegularRenamerのフルパス) | &RegularRenamer
    >"%M" "s/%X/%X/k"
%end

これで全部です。ポチエス自体の画面は全く現れませんし。

とりあえずやってみましょうか。ポチエスのフォルダに最初から入っている「_es〜.ini」っていうファイルを全部マークして外部コマンド起動。一個目のダイアログに「_」と入力して決定、二個目は何も入力せずに決定してください。

…iniファイル全部が「es〜.ini」という名前になったんじゃないでしょうか。元に戻したい時は一個目は「^」と入力して決定、二個目は「_」と入力して決定すればOK。

オプションは一番簡単そうなのを提示しただけなので、こだわれば色々なパターンを作れますよ。

多段ポチエス

以前は拡張子に関係なく放り込みたいソフトがあったときにはポチエスを二つ用意してファイルをやり取りする必要があったのですが、現在の関連付け専用版は至って簡単。しかも、これのおかげで設定ファイルは非常にコンパクトになったうえ、階層化も可能になった。

[all]
+
{common(&@)
    E:\Application\ffc\FFC.exe | &FireFileCopy
    E:\Application\stir\Stirling.exe | &Stirling
}
%end

これを設定ファイルの末尾に書き込むだけでOK。

ところで、みなさんはどんなツールを[all]に組み込んでますか?
筆者がそこそこ使うのは、StirlingNoah(圧縮)、下記matchline.vbsあたりですかねえ。

QuickDir+ポチエス

QuickDirの紹介作者folia氏のサイト

1. タイトルバーに表示されたファイルをポチエスに送る

これは分かりやすいですね。テキストエディタで編集したhtmファイルをブラウザで表示したり、SDIのエディタとMDIのエディタを使い分けるのに役立ちます。
やり方はQuickDirのmenuフォルダ内のiniファイルに、

ポチエスに転送(&.),exec,(ポチエスのフルパス),"%file%"

といった感じで書き足すだけ。

2. 実行ファイルのあるディレクトリをポチエスで開く

これは2通りあります。ひとつはmenuフォルダ内のiniファイルに

ポチエスで見る(&:),exec,(ポチエスのフルパス),/d="%exedir%"

と記述する方法です。ふたつめはmenuフォルダ内のiniファイルには

,qdir

とだけ書いておき、qdir.iniの方を

[FilerPath]
(ポチエスのフルパス)
[FilerParam(ItemPath=%)]
/d="%"

とする方法です。他の表示したいメニュー等と相談して決めてください。

DialogHandler+ポチエス

DialogHandlerの紹介作者Frozen氏のサイト

ポチエスの旧仕様版を使ってDialogHandlerをより便利にする方法を考えてみます。動作設定ファイル(ここではdsSys.ini)は、filer=の設定を未設定にしてdir#=の部分に良く使うフォルダを登録、そしてdirect=1にしておくこと。次に、dsExt.iniを

[.*]
(DialogHandlerのフルパス)
%end

に設定して準備完了。これで何を選んでもダイアログに反映される。あとは、dsLnh.iniに

[lnh0=DialogSet]&
(QuickDirのフルパス)
%name=&Software
%opt=/d
%option

と記述してQuickDirを非常駐起動させるようにします。最後にQuickDirのd.iniを

current,exec,(DialogHandlerのフルパス),"%exedir%"

と1行だけ書かれたファイルにすれば、ポチエスの「Software」を選んだときに実行ファイルのあるディレクトリに飛べます。これでDialogHandler用のポチエスとしてそこそこ使いやすくなるのでは。

筆者はQuickDirのm.iniからこのポチエスを呼び出しています。

ポチエス+DialogHandlerのスクリーンショット

関連付けの登録の無いファイルをポチエスで開く

エクスプローラで関連付けの登録の無いファイル(フォルダオプションに列挙されていない拡張子を持つファイル)をダブルクリックすると、通常は「ファイルを開けません」というメッセージの後にファイルを開くアプリケーションを選択するダイアログが出てきます。このダイアログを出すかわりにポチエスで開くようにしてしまおう、というテクニックです。

やり方ですが、やはりここは定番の窓の手で設定する方法を推しておきます。窓の手で可能になる設定項目に「未登録ファイルをダブルクリックしたら取りあえず以下のアプリケーションで開く」というものがあるのでここにポチエスのフルパスを打ち込むだけでOK。

レジストリエディタで直接ポチエスを登録する方法もあるんですけど個人的には素直に窓の手で登録した方がいいんじゃないか、と思ってます。というのも、"HKEY_CLASSES_ROOT"は一般的に"HKEY_LOCAL_MACHINE"や"HKEY_CURRENT_USER"よりも複雑な構成を取っており、下手にこちらをいじる癖をつけてしまうと後で痛い目に会う可能性が高いので、(ある程度分かってる人も)できるだけ専用のソフトやフォルダオプションで設定するのが定石だと思います。とりあえずここでは詳しくは書きません。

ヒントついでに果てしなくどうでもいいことを言うと、

[all]
C:\WINDOWS\System32\rundll32.exe | &Dialog
    >shell32.dll,OpenAs_RunDLL "%P"

こんな感じに登録するとポチエスから「ファイルを開くプログラムの選択」ダイアログを出すことが出来ます。

設定ファイルを手早く確認する

関連付けメニューを表示させた状態からポチエスのiniファイルを確認したいときってありますよね。そのときにiniファイルの拡張子の設定部分にジャンプできるようにしておこう、というテクニックです。

このアイディアはTOKKY.COMの050903の記事と猫歩き - diary/2005/09/04を元ネタとして作成したものです。

まずはエディタを探す。メモ帳ではファイルを開いたときに行数を指定できないからです。ここではGreenPadを使うことにします。GreenPadで行数を指定するときのオプションは、

[例]
E:\App\greenpad\GreenPad.exe -l123 C:\foo\bar.txt
→"C:\foo\bar.txt"の123行目を開く

といった感じです。で、それに対応したスクリプトを用意する(ここではWSH)。

Option Explicit

Dim sFile,sWord
sFile = Wscript.Arguments(0)
sWord = Wscript.Arguments(1)
    If sWord = "[]" Then
        sWord = "[folder]"
    End If

Dim fso,otf
Set fso = CreateObject("Scripting.FileSystemObject")
Set otf = fso.OpenTextFile(sFile) 'テキストファイルとしてオープン

Dim sLine,fLine
Do Until otf.AtEndOfStream 'otfを末端を読み込むまでループ
    sLine = otf.ReadLine '1行ずつ読み込む
    If InStr(sLine,sWord)<>0 Then 'その行にもし検索文字があったら
        fLine = otf.Line - 1
        Exit Do '合致したらループは中止
    End If
Loop

Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run Chr(34) & "E:\App\greenpad\GreenPad.exe" & Chr(34) & " -l" & fLine & " " & sFile

18行目なんですが良い説明があったので引用。

Lineプロパティから1を引いていますが、これはファイルを開いた直後の状態が1となっていて、その後1行読むたびに+1ずつカウントアップされていく仕様なので、実際の行より1多くなっている為です。

最後にこのスクリプトをポチエスのiniファイルに設定。

[all]
E:\App\esExt5\matchline.vbs | &iniファイル
    >"E:\App\ExtSel5\esExt5.ini" [%E]

今回は拡張子を探すだけなので単純一致にしましたが、色々応用したいなら正規表現を利用した方が幅が出ると思います。

…とか何とかやってるうちにmoeweの信次さんがlinejumpという便利なツールを作ってくれました。汎用性のあるツールなので、これから導入してみようかという方にはこちらを推奨します。この目的ひとつに限って言えば、フォルダを転送したときの動作に対応してる分だけスクリプトでやった方がいいと思いますけど。

notepad.exeの置き換え

メモ帳が勝手に起動する状況がいくつかあります。.vbsや.jsファイルの右クリックメニューで「編集(E)」を選んだり、IEで「ソースの表示」を選んだときが分かりやすいですね。

ひとつずつレジストリをいじって設定することもできますが、いっそのこと、notepad.exeをポチエスに置き換えてしまってそれらをまとめて編集できるようにしてしまおう、というテクニックです。

置き換える方法なんですが、notepad.exeが2つあること、ポチエスを更新したいときの煩雑さを考えて優先君を使うことにします。システムファイルの上書きについては筆者の雑談の方を参照してください。

ここでひとつ注意なんですが、優先君でショートカットを作るときに引数を付けないようにして下さい。詳しい理由は分からないのですが、引数を設定した状態の優先君に半角スペースを含むパスを転送しても大体失敗します。

あとは各自の常用エディタをポチエスに関連付けるだけです。IEにキャッシュされたファイルには拡張子が付いてないので、素直に[.*]で設定してしまうのが無難です。例えばサクラエディタは拡張子無しファイルをHTMLとみなして開くことが出来ないようなので、

[.*]
(サクラエディタのフルパス) | &Sakura
    >-TYPE=html "%P"

と設定してみてください。この辺にもこの方法のメリットが現れてますね。