2016年9月21日水曜日

最近のコピー(移動/解凍)先フォルダをメニュー表示

最近、ファイルのコピー(移動/解凍)先にしたパスをメニュー表示。それを選択すればコピー(移動/解凍)できるようにする。


 

準備


以下をScriptフォルダに保存。

stackalias.js

//!*script
// 第一引数 : エイリアスのベースネーム
// 第二引数 : 登録内容

// 「第一引数+連番」のエイリアスに、第二引数を登録する
// 第一引数がhogehogeであれば、最初はhogehoge0、次はhogehoge1という具合
// 第二引数が既に登録済みであれば、それがhogehoge0になるよう順番を入れ替える

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

MAX_CMD = 5; // 連番の最大値

var cmd = PPx.Arguments.Item(0);
var macro = PPx.Arguments.Item(1);

// 既に登録されているかチェック。登録されていれば末尾の数値を取得
for (var i = 0; i <= MAX_CMD; i++) {
  if (PPx.Extract("%'"+cmd + i + "'") == PPx.Extract(macro)){
    var i2 = i;
    break;
  }
}

// パスを登録する。パスが登録済みかどうかで分岐
if (i2==null) { // パスが未登録なら登録
  for (var i = MAX_CMD; i > 0; i--) {
    PPx.Execute("*alias "+cmd+i+" = %'"+cmd+(i-1)+"'");
  }
  PPx.Execute("*alias "+cmd+0+" = "+macro);
} else if (i2!=0) { // パスが登録済みかつ末尾が0以外の時は、登録内容の順番を入れ替える
  for (var i = i2; i > 0; i--) {
    PPx.Execute("*alias "+cmd+i+" = %'"+cmd+(i-1)+"'");
  }
  PPx.Execute("*alias "+cmd+0+" = "+macro);
}

以下を編集して取込。解凍に使っているwrap_7zG.jsについては、


を参照。

-|M_CopyDestDir =
-|M_MoveDestDir =
-|M_UnpackDestDir =

KC_main = { ; PPcメイン窓
C ,*ppcfile copy /compcmd *script %0\Script\stackalias.js,copy_dest,%%hd0
M ,*ppcfile move /compcmd *script %0\Script\stackalias.js,move_dest,%%hd0
U ,*set hoge=%"解凍先"%eRd%!2 %: *script %0\Script\wrap_7zG.js,"%a8FDC",%'hoge' %: *script %0\Script\stackalias.js,unpack_dest,%'hoge'
}
M_CopyDestDir = { ** comment **
&A %'copy_dest0' = *ppcfile !copy /dest:%*name(DC,%'copy_dest0')
&B %'copy_dest1' = *ppcfile !copy /dest:%*name(DC,%'copy_dest1') /compcmd *script %%0\Script\stackalias.js,copy_dest,%%'copy_dest1'
&C %'copy_dest2' = *ppcfile !copy /dest:%*name(DC,%'copy_dest2') /compcmd *script %%0\Script\stackalias.js,copy_dest,%%'copy_dest2'
&D %'copy_dest3' = *ppcfile !copy /dest:%*name(DC,%'copy_dest3') /compcmd *script %%0\Script\stackalias.js,copy_dest,%%'copy_dest3'
&E %'copy_dest4' = *ppcfile !copy /dest:%*name(DC,%'copy_dest4') /compcmd *script %%0\Script\stackalias.js,copy_dest,%%'copy_dest4'
}

M_MoveDestDir = { ** comment **
&A %'move_dest0' = *ppcfile !move /dest:%*name(DC,%'move_dest0')
&B %'move_dest1' = *ppcfile !move /dest:%*name(DC,%'move_dest1') /compcmd *script %%0\Script\stackalias.js,move_dest,%%'move_dest1'
&C %'move_dest2' = *ppcfile !move /dest:%*name(DC,%'move_dest2') /compcmd *script %%0\Script\stackalias.js,move_dest,%%'move_dest2'
&D %'move_dest3' = *ppcfile !move /dest:%*name(DC,%'move_dest3') /compcmd *script %%0\Script\stackalias.js,move_dest,%%'move_dest3'
&E %'move_dest4' = *ppcfile !move /dest:%*name(DC,%'move_dest4') /compcmd *script %%0\Script\stackalias.js,move_dest,%%'move_dest4'
}
M_UnpackDestDir = { ** comment **
&A %'unpack_dest0' = *script %0\Script\wrap_7zG.js,"%a8FDC",%'unpack_dest0'
&B %'unpack_dest1' = *script %0\Script\wrap_7zG.js,"%a8FDC",%'unpack_dest1' %: *script %0\Script\stackalias.js,unpack_dest,%'unpack_dest1'
&C %'unpack_dest2' = *script %0\Script\wrap_7zG.js,"%a8FDC",%'unpack_dest2' %: *script %0\Script\stackalias.js,unpack_dest,%'unpack_dest2'
&D %'unpack_dest3' = *script %0\Script\wrap_7zG.js,"%a8FDC",%'unpack_dest3' %: *script %0\Script\stackalias.js,unpack_dest,%'unpack_dest3'
&E %'unpack_dest4' = *script %0\Script\wrap_7zG.js,"%a8FDC",%'unpack_dest4' %: *script %0\Script\stackalias.js,unpack_dest,%'unpack_dest4'
}

やり方


Cを押してファイルをコピー。



すると、コピー先のパスがエイリアスcopy_dest0に保存される。



次にファイルをコピーすると、そのコピー先パスはcopy_dest1に登録される。さらにその次のコピー先パスはcopy_dest2に……。

移動(M)のときは

move_dest0
move_dest1
move_dest2
move_dest3


解凍(U)のときは

unpack_dest0
unpack_dest1
unpack_dest2
unpack_dest3

の順番で処理先のパスが登録される。

パスは5つまで登録でき、新しく実行したものは自動でメニューの上の方に来るようにする。ちなみに、記憶数を変えたいときはstackalias.jsのMAX_CMD = 5;の数値をいじる。

蓄積したメニューは


%M_CopyDestDir
%M_MoveDestDir
%M_UnpackDestDir

を実行すれば表示される。適当なキー等に登録しよう。僕は右クリックメニューに登録している。



追記 2016/09/25


ファイル名に空白があると書庫の展開がうまくいかない場合があったので、一部修正。"%a8FCDN"を"%a8FDC"にした。

0 件のコメント:

コメントを投稿