2016年2月1日月曜日

サブフォルダをメニュー表示してファイル移動

カレントフォルダのサブフォルダをメニュー表示して、そこにカーソル下のファイル(あるいはマークファイル)を移動する。


文書や画像の管理の時、こういう操作をすることが結構多いよな、と思って作った。利用機会はあまり無い気もするが、一応コピーもできるようにする。

準備


以下を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
}

やり方


  1. 移動したいファイルをマークする。移動させたいのが一つなら、そこにカーソルを置くだけでもいい。
  2. Ctrl+Shift+Mを押す(コピーの場合はCtrl+Shift+C)。すると、サブフォルダメニューが出る。
  3. 移動したいフォルダを選択すると、ファイル移動する。


追記


0 件のコメント:

コメントを投稿