文書や画像の管理の時、こういう操作をすることが結構多いよな、と思って作った。利用機会はあまり無い気もするが、一応コピーもできるようにする。
準備
以下を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 件のコメント:
コメントを投稿