文書や画像の管理の時、こういう操作をすることが結構多いよな、と思って作った。利用機会はあまり無い気もするが、一応コピーもできるようにする。
準備
以下をScriptフォルダに保存。
subdirmenu.js
//!*script
// カレントフォルダのサブフォルダをメニュー表示し、そこに移動/コピーするスクリプト
// 第一引数がmなら移動
// 第一引数がcならコピー
// 引数がなければ終了
if (PPx.Arguments.Length < 1){
PPx.SetPopLineMessage("引数が正しくありません。");
PPx.Quit(-1);
}
// サブフォルダがなければ終了
if (PPx.EntryDisplayDirectories() == 0){
PPx.SetPopLineMessage("サブフォルダがありません。");
PPx.Quit(-1);
}
var currentDir = PPx.Extract('%1');
var fso = PPx.CreateObject("Scripting.FileSystemObject");
var i2 = 0;
// メニューの削除
PPx.Execute("*setcust -|M_hoehoe =");
// メニュー項目の登録
for (var i = 0; i < PPx.EntryAllCount; i++) {
var f = PPx.Entry(i).Name;
// ディレクトリかどうかを判別
if (PPx.Entry(i).Attributes & 16 && f !=('.') && f!=('..')) {
// 項目数が10を超えたら次の段へ。30を超えたら終了。
if (i2 == 10 || i2 == 20) {
PPx.Execute('*setcust M_hoehoe:||=');
} else if (i2 == 30) {
break;
}
// 表示内容を、コメントがあるときはコメントに。ない場合はフォルダ名に。
if (PPx.Entry(i).Comment != ""){
var item = PPx.Entry(i).Comment;
} else {
var item = f;
}
// メニューの登録。10項目までは数字のショートカットを付加する。
if (i2 < 10) {
// 表示内容の後ろに全角スペースを付け足している。表示内容が1文字の場合、実行内容も表示されてしまうため。
PPx.Execute('*setcust M_hoehoe:&'+i2+ ' '+item+' = '+fso.BuildPath(PPx.Extract("%1"), f));
} else {
PPx.Execute('*setcust M_hoehoe:'+item+' = '+fso.BuildPath(PPx.Extract("%1"), f));
}
i2 += 1;
}
}
// メニューの実行
if (PPx.Arguments.Item(0) == "m"){
PPx.Execute("*ppcfile !move,%M_hoehoe,0");
} else if (PPx.Arguments.Item(0) == "c"){
PPx.Execute("*ppcfile !copy,%M_hoehoe,0");
} else {
PPx.SetPopLineMessage("引数にはmかcを指定してください");
}
// オブジェクトを解放
fso = null;
以下を編集して取込。
KC_main = { ; PPcメイン窓
^\C ,*script %0\Script\subdirmenu.js,c
^\M ,*script %0\Script\subdirmenu.js,m
}
やり方
- 移動したいファイルをマークする。移動させたいのが一つなら、そこにカーソルを置くだけでもいい。
- Ctrl+Shift+Mを押す(コピーの場合はCtrl+Shift+C)。すると、サブフォルダメニューが出る。
- 移動したいフォルダを選択すると、ファイル移動する。
追記
@tukasa1900 1行で書くなら *ppcfile !copy /dest:"%*tree(%1)" でしょうか。普段は、コピー先を .\ にして、その補完一覧からコピー先を選択してます。— TORO (@toroidj) 2016, 2月 2


0 件のコメント:
コメントを投稿