パスによる判別実行

拡張子による判別とパスによる判別

拡張子判別

拡張子判別ソフトというものがある。あるファイルをそこに投げると、そのファイルの拡張子に対応して、事前に登録したメニューが出て、どのソフトでそのファイルを実行するかを決めることができる。例えば拡張子がJpgの場合は、

このようなメニューがでる。
これだと、その時々の用途にあわせて、その用途に特化したソフトで起動することが可能になるわけだ。
この手のソフトとして一番有名なのはポチエスで、fenrirでも同じことができたりする。非常にファイラと相性がいい。

パスによる判別

だが、これとは別に、特定のフォルダを特定のソフトで開きたいという場合がある。例えばMP3が入っているアルバムフォルダと、画像が入っているフォルダとではそれを投げるソフトは違ってくるわけです。音楽フォルダを画像閲覧ソフトに投げることも、画像フォルダを音楽プレイヤーに投げるということも絶対にない。しかし、このときは二つとも、拡張子という観点では区別することができないわけです。
このような場合、パスで区別することになる。パスにMUSICと入っているかだとか、D:\MUSICフォルダ以下にあるかどうかで判別して、特定のソフトに投げるということになるわけです。これができるソフトとして、やはりポチエス(名称による判別版)があります。fenrirでも同じことができます。

とにかく、拡張子とパス、この二つの判別によって、起動するソフトを変えたい場合があるわけです。

PPxでやりたい

ということで本題。このパスによる判別をPPxでできないかと考えた。
拡張子による判別は普通に対応しているが、パスによる判別もどうにかしてできないだろうか。例えば、音楽フォルダを右クリックしたら音楽フォルダ用メニューを出すというようにできないだろうか。

というわけでその方法です。スクリプトを用います。

  • menu.js
//!*script


if (PPx.GetFileInformation(PPx.Extract("%FCDN")) == ":DIR"  && PPx.Extract("%1").match(/D:\\Music/)){
 PPx.Execute("%M_Music")
}else {
PPx.Execute("%ME_mouseR")
};

BackSpace編で作ったものをほぼそのまま流用。これは、D:\Music以下にいてかつフォルダのときは音楽再生用メニューM_Musicを。そうでないときは拡張子判別E_mouseRを実行するスクリプトです。

  1. D:\Musicかどうかを判別
  2. 違えば拡張子判別をする

という二段階ですね。条件分岐を適当に増やせば、もっと細かく分けることもできると思います。

これを、右クリックに登録。

MC_click	= {	; PPc メイン窓
R_ENT	,*script %0\Script\menu.js
}

拡張子別判別実行

一応拡張子別判別実行のメニューと、関連するメニューも載せておきます。以前書いた記事も参考にしてください。

E_mouseR	= {	** comment **
:DIR	,%M_DirMenu
.jpg;.png	,%M_Picture
MP3	,%M_Music
*	,%M_menuCEdit
}

M_DirMenu	= {	** comment **
コピー	= %K"@C"
切り取り	= %K"@^X"
名前の変更	= %K"@R"
パスのコピー	= %M_ClipPath
DropBoxにバックアップ	= *file DirMirror,,"C:\Documents and Settings\ユーザーネーム\My Documents\My Dropbox"
--	= 
プロパティ	= %z%FVD,properties
}

M_Music	= {	** comment **
&Aimp2	= %Ob "C:\Program Files\AIMP2\AIMP2.exe" %#FCD
Aimp2に追加	= %Ob "C:\Program Files\AIMP2\AIMP2.exe" /insert %#FCD
パスのコピー	= %M_ClipPath
}

M_menuCEdit	= {	** comment **
開く	= %z,open
PPvで閲覧	= %K"@N"
エディタで編集	= %"Text edit"%Orib,editor %FDC
--	= 
DropBoxにコピー	= *file DirMirror,,"C:\Documents and Settings\ユーザーネーム\My Documents\My Dropbox"
コピー	= %K"@C"
切り取り	= %K"@^X"
パスのコピー	= %M_ClipPath
--	= 
ショートカットの作成	= %z,link
削除	= %K"@\D"
名前の変更	= %K"@R"
--	= 
カーソル行の拡張子でファイルマスク	= *maskentry *.%T
プロパティ	= %K"@&ENTER"
}

M_Picture	= {	** comment **
PPv	= %K"@N"
DialogHandler	= %Ob D:\bin\DialogHandler\DialogHandler.x86-32.exe  %FCD
Azpainter	= %Ob D:\bin\azpt\AzPainter2.exe %FCD
MassiGra	= %Ob D:\bin\MassiGra\MassiGra.exe %FCD
縮小専用	= %Ob D:\bin\smahe\SmaHey.exe %FCD
}

M_Mask	= {	** comment **
ディレクトリマスク	= *maskentry attribute:d
EXEでマスク	= *maskentry *.exe
テキストマスク	= *maskentry *.txt,*.howm,*.ini
画像マスク	= *maskentry *.jpg,*.jpeg,*.png,*.gif,*.bmp
マスク解除	= *maskentry
}

M_ClipPath	= {	** comment **
&CopyFileName	= *cliptext %R
Copy&DirName	= *cliptext %1
Copy&FileName(拡張子無し)	= *cliptext %Y
CopyFilePath	= *cliptext %FCD
}