2018年11月2日金曜日

PPxをランチャとして使う⑥フォルダパスをPPcに投げる



一行編集に入力された文字列がフォルダパスの場合、それをPPcで開くようにする。

準備


以下の2つのファイルをScriptフォルダに保存。isThisFolder.jsは引数を一つ取り、それが実在するフォルダパスの場合は1を、そうでない場合は0を返すスクリプト。isThisFIle.jsはそれのファイルバージョン。

isThisFolder.js

//!*script

// 引数にとった文字列がフォルダパスかどうかを判別
// フォルダパスなら1を。それ以外なら0を返す
// 第一引数 : 文字列

// 引数がなければ終了
if (PPx.Arguments.Length < 1){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit(-1);
}

var fso = PPx.CreateObject("Scripting.FileSystemObject");
var file = PPx.Arguments(0);

if(fso.FolderExists(file)){
  PPx.Result  = 1;
} else {
  PPx.Result  = 0;
}

fso = null;

isThisFile.js

//!*script

// 引数にとった文字列がファイルパスかどうかを判別
// ファイルパスなら1を。それ以外なら0を返す
// 第一引数 : 文字列

// 引数がなければ終了
if (PPx.Arguments.Length < 1){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit(-1);
}

var fso = PPx.CreateObject("Scripting.FileSystemObject");
var file = PPx.Arguments(0);

if(fso.FileExists(file)){
  PPx.Result  = 1;
} else {
  PPx.Result  = 0;
}

fso = null;

あとは、以下のコマンドを実行すれば、入力文字列で判別し、PPCでフォルダパスを開いたり、実行したりできる。

*string o,name=%"PPlauncher"%eh%E %:
*if %*script(%0\Script\isThisFolder.js,%so"name") %: *ppc -r %so"name" %: *stop
*if %*script(%0\Script\isThisFile.js,%so"name") %: *execute,"%so"name"" %: *stop
*execute,%so"name"

ディレクトリの登録


フォルダパスを補完リストに登録するやり方は、PPxをランチャとして使う④ファイルパスの補完を参照のこと。
僕は、PPxフォルダに、フォルダパスを羅列したl_dir.txtというファイルを作り、それを読み込ませている。

l_dir.txt

D:\bin
D:\Data
D:\Download
D:\work
D:\Temp
D:\work\Picture
D:\bin\ppx2window64
C:\Users\tukasa\Dropbox\Temp

これをFIRSTEVENTに登録。

K_edit = { ; 一行編集/PPe兼用
FIRSTEVENT ,*completelist /set /file:%0l_dir.txt
}


これまでの設定まとめ


  • PPtrayを起動
  • isThidFolder.jsとisThisFIle.jsをScriptフォルダに作成
  • ファイルパスをまとめたl_cmd.txtをPPxフォルダに作成
  • フォルダパスをまとめたl_dir.txtをPPxフォルダに作成

X_flst = 3,2 ; エントリ補完結果一覧 0:無 1:有 2:OS版 3~5:動的,0:先頭 1:部分

A_exec = { ; エイリアス
NeeView = D:\bin\NeeView\NeeView.exe
aimp = D:\bin\AIMP4\AIMP.exe
xyzzy = D:\bin\xyzzy\xyzzy.exe
weather = *ppv http://wttr.in/kyoto.png
}

K_tray = { ; PPtrayホットキー(キー指定 不可,V_xx 形式を推奨)
^' ' ,*if %*findwindowtitle("PPlauncher") %: *focus !"PPlauncher" %: *stop
 *string o,name=%"PPlauncher"%eh%E %:
 *if %*script(%0\Script\isThisFolder.js,%so"name") %: *ppc -r %so"name" %: *stop
 *if %*script(%0\Script\isThisFile.js,%so"name") %: *execute,"%so"name"" %: *stop
 *execute,%so"name"
}

K_edit = { ; 一行編集/PPe兼用
^W ,*execute ,%Ob browser  "http://google.jp/search?q=%*edittext&ie=utf-8&oe=utf-8" %: %k"&F4"
F12 ,*ppcust %: %k"&F4"
ESC ,%k"&F4"
FIRSTEVENT ,*completelist /set /file:%0l_cmd.txt %: *completelist /set /file:%0l_dir.txt
}

追記 2018/11/06


ファイルパスの実行とエイリアスの実行は、区別する必要ないかと思い、isThisFile.jsとそれに関する設定は省いていた。が、パスに空白が入るときの処理で区別しないとだめなことに気づき、付け足した。

0 件のコメント:

コメントを投稿