2013年2月24日日曜日

ファイルの内容をクリップボードにコピー

PPxでカーソル下のファイルの内容をコピーする方法です。 今まではAHKを使ってやってましたが(ファイルの内容をクリップボードにコピー - つかさのほえほえ日記)、それをPPxのScript Moduleを利用してできるようにします。

ファイルの内容をコピーするスクリプト


カーソル上のファイルの内容を読み出し、クリップボードにコピーするスクリプトです。

ClipFile.js
//!*script

var objItem = PPx.Extract("%FCD");
var objFileSys = new ActiveXObject("Scripting.FileSystemObject");
objInFile = objFileSys.OpenTextFile(objItem, 1);

PPx.Clipboard = objInFile.ReadAll();
objInFile.Close();

ファイルの内容を追加コピーするスクリプト


カーソル上のファイルの内容を読み出し、クリップボードに追加コピーするスクリプトです。

ClipFileAdd.js
//!*script

var objItem = PPx.Extract("%FCD");
var objFileSys = new ActiveXObject("Scripting.FileSystemObject");
objInFile = objFileSys.OpenTextFile(objItem, 1);

PPx.Clipboard = PPx.Clipboard + "\n" + objInFile.ReadAll();
objInFile.Close();

マークしたファイルの内容をコピーするスクリプト

マークした順番に、マークしたファイルの内容をクリップボードにコピーします。

ClipMarkFile.js
//!*script
 
if (PPx.EntryFirstMark == 0){
  var objItem = PPx.Extract("%FCD");
  var objFileSys = new ActiveXObject("Scripting.FileSystemObject");
  objInFile = objFileSys.OpenTextFile(objItem, 1);

  PPx.Clipboard = objInFile.ReadAll();
  objInFile.Close();
  
} else {
  strLine = ""
  while(true){
    var dir = PPx.Extract('%1');
    var entryName = PPx.EntryName;
    var objItem = dir + "\\" + entryName;
    
    var objFileSys = new ActiveXObject("Scripting.FileSystemObject");
    objInFile = objFileSys.OpenTextFile(objItem, 1);
    strLine = strLine + objInFile.ReadAll() + "\n";
    objInFile.Close();

    if(PPx.EntryNextMark == 0) break;
  }
  PPx.Clipboard = strLine
}

メニュー形式で登録してみる

パスのコピーなどとあわせて、メニュー形式で登録してます。僕はShift+Nに割り振っています。

KC_main = { ; PPcメイン窓
\N ,%M_ClipPath,C
}


M_ClipPath = { ** comment **
CopyFileName = *cliptext %R
Copy&DirName = *cliptext %1
Copy&FileName(拡張子無し) = *cliptext %Y
CopyFilePath = *cliptext %FCD
ファイルの内容をクリップボードにコピー = *script %0\Script\ClipFile.js
ファイルの内容をクリップボードに追加コピー = *script %0\Script\ClipFileAdd.js
マークしたファイルの内容をクリップボードにコピー = *script %0\Script\ClipMarkFile.js
}

0 件のコメント:

コメントを投稿